如何增加NSNumber?
即myNSNumber ++
如何增加NSNumber?
即myNSNumber ++
Answers:
更新:仅供参考,我个人更喜欢BoltClock和DarkDusts的单行答案。它们更加简洁,不需要其他变量。
为了增加an NSNumber,您将必须获取它的值,然后增加它的值并将其存储在new中NSNumber。
例如,对于NSNumber一个整数:
NSNumber *number = [NSNumber numberWithInt:...];
int value = [number intValue];
number = [NSNumber numberWithInt:value + 1];
或者对于NSNumber一个浮点数:
NSNumber *number = [NSNumber numberWithDouble:...];
double value = [number doubleValue];
number = [NSNumber numberWithDouble:value + 1.0];
...?多数民众赞成在伪代码参考吗?XCode并非如此...
...只是您想要的任何数字的占位符。
对于使用最新Xcode版本(从4.4.1,SDK 5.1开始编写)的人,通过使用对象文字,您甚至可以多清理一点代码...
NSNumber *x = @(1);
x = @([x intValue] + 1);
// x = 2
处理装箱和拆箱以进行简单操作仍然有些痛苦,但它会变得更好,或者至少变得更短。
将它们放在一起,您将拥有:
myNSNumber = @(myNSNumber.intValue + 1);
NSNumber对象是不可变的(?)
我喜欢点表达式,因为它更简洁,这就是IOS首先支持它的原因:
myNSNumber = [NSNumber numberWithInt:myNSNumber.intValue + 1];
如果您使用它来存储整数值:
myNSNumber = @(myNSNumber.longLongValue + 1);
对于浮点数,简短的答案是以下内容,但这是一个坏主意,您将失去精度,如果以后再进行任何比较,例如[myNSNumber isEqual:@(4.5)],您可能会感到惊讶:
myNSNumber = @(myNSNumber.floatValue + 1);
如果需要对以Objective-C中的对象表示的浮点数进行数学运算(即,如果需要将它们放入数组,字典等中),则应使用NSDecimalNumber。
使用类别以简化将来的使用。这是一个基本的想法。
- (void)incrementIntBy:(int)ammount {
self = [NSNumber numberWithInt:(self.intValue + ammount)];
}
这个问题的答案中有很多不错的信息。我在代码中使用了选定的答案,它起作用了。然后,我开始阅读其余的文章,并简化了很多代码。如果您不熟悉Xcode 5中引入的表示法更改,则阅读起来会有些困难,但是它要干净得多。我可能只能将其写成一行,但要弄清楚我在做什么就有些困难了。
我正在字典中存储NSNumber,我想增加它。我得到了它,将其转换为int,在将其转换为NSNumber时将其递增,然后将其放回字典中。
旧密码
NSNumber *correct = [scoringDictionary objectForKey:@"correct"];
int correctValue = [correct intValue];
correct = [NSNumber numberWithInt:correctValue + 1];
[scoringDictionary removeObjectForKey:@"correct"];
scoringDictionary[@"correct"] = correct;
新密码
NSNumber *correct = [scoringDictionary objectForKey:@"correct"];
scoringDictionary[@"correct"] = @(correct.intValue + 1);
NSNumber *,请始终检查基本类型是否足够。