Bol*_*ock 125
NSNumber
对象是不可变的; 你能做的最好的事情是获取原始值,增加它然后将结果包装在它自己的NSNumber
对象中:
NSNumber *bNumber = [NSNumber numberWithInt:[aNumber intValue] + 1];
Run Code Online (Sandbox Code Playgroud)
Ita*_*ber 122
更新:仅供参考,我个人更喜欢BoltClock和DarkDusts的单行答案.它们更简洁,不需要额外的变量.
为了增加a NSNumber
,你将不得不获得它的值,增加它,并将它存储在一个新的中NSNumber
.
例如,NSNumber
持有一个整数:
NSNumber *number = [NSNumber numberWithInt:...];
int value = [number intValue];
number = [NSNumber numberWithInt:value + 1];
Run Code Online (Sandbox Code Playgroud)
或者NSNumber
持有一个浮点数:
NSNumber *number = [NSNumber numberWithDouble:...];
double value = [number doubleValue];
number = [NSNumber numberWithDouble:value + 1.0];
Run Code Online (Sandbox Code Playgroud)
sho*_*shi 77
对于使用最新版本的Xcode(从4.4.1开始编写,SDK 5.1)的任何人,使用对象文字,你可以更清楚地清理代码......
NSNumber *x = @(1);
x = @([x intValue] + 1);
// x = 2
Run Code Online (Sandbox Code Playgroud)
仍然有点痛苦处理拳击和拆箱一切做简单的操作,但它变得越来越好,或至少更短.
Dar*_*ust 30
NSNumbers是不可变的,您必须创建一个新实例.
// Work with 64 bit to support very large values
myNSNumber = [NSNumber numberWithLongLong:[myNSNumber longLongValue] + 1];
// EDIT: With modern syntax:
myNSNumber = @([myNSNumber longLongValue] + 1);
Run Code Online (Sandbox Code Playgroud)
JLu*_*ell 24
把它们放在一起,你有:
myNSNumber = @(myNSNumber.intValue + 1);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
73439 次 |
最近记录: |