为什么以下加法失败并显示以下错误?

NSNumber *five = [NSNumber numberWithInt:5];
NSNumber *three = [NSNumber numberWithInt:3];
NSNumber *eight = [five intValue] + [three intValue];

ARC不允许将int隐式转换为NSNumber

===============>>#1 票数:5 已采纳

使用现代语法:

NSNumber *five = @5;
NSNumber *three = @3;
NSNumber *eight = @([five intValue] + [three intValue]);

为了完整起见:该错误是由于尝试将一个int值分配给NSNumber变量引起的。 该值必须被包装。

===============>>#2 票数:2

您不能仅将一个int分配给NSNumber 您必须使用NSNumbernumberWithInt:int值实例化NSNumber对象:

NSNumber *eight = [NSNumber numberWithInt:([five intValue] + [three intValue])];

或者,您可以执行以下操作:

NSNumber *eight = @([five intValue] + [three intValue]);

但是,如果不调用某些函数,就无法从int转换为NSNumber

===============>>#3 票数:0

您需要这样做:

NSNumber *eight = [NSNumber numberWithInt:([five intValue] + [three intValue])];

如果可以,请避免将NSNumber用于数字运算(例如加法),而应使用int值。 只需在最终需要时创建一个NSNumber (即在可可库调用中使用它)。

===============>>#4 票数:0

[five intValue] + [three intValue]不会产生NSNumber对象,它会产生一个int ,与5 + 3相同。 这解释了您的错误, Implicit conversion of int to NSNumber is disallowed with ARC

您想要的代码行是: NSNumber *eight = [NSNumber numberWithInt:[five intValue] + [three intValue]];

  ask by 4thSpace translate from so

未解决问题?本站智能推荐:

1回复

作为值添加到NSMutableDictionary的NSNumbers变为空

我有一段代码可以将对象的字典构造为键,而将操作代码(例如添加/更新/删除)构造为值。 最近,无论是使用iOS 6还是随着“ zee Germans”的到来,它都崩溃了。 值是构造的,偶尔会添加,但是大多数时候,我会得到一个充满(空)值的字典。 我已经用中间变量和将枚举值显式转换为
4回复

比较NSStrings和有关NSNumbers的警告

有时JSON从获取数据的数据库中返回(null) ,因此我进行检查以查看其是否返回了该(null) 。 但是Xcode警告我 不兼容的Objective-C类型'struct NSString *',从不同的Objective-C类型传递'compare:'参数1时,预期的's
5回复

在NSNumbers的NSArray中寻找最小和最大值

比较floats中包含NSNumbers的NSArray所有值,以找到最大的和最小的一个有效且有效的方法是什么? 有什么想法如何在Objective-C中做到又好又快呢?
2回复

根据==,从同一个float创建的两个NSNumber不相等

我有一些float ,我转换为NSNumber并添加到数组,然后按数字顺序排序。 然后我拿起原始的float并将它们转换为NSNumber ,但如果我尝试比较它们if(numinarray = newnum){它永远不会去任何地方。 当我NSLog()输出值时,值匹配: 我错过了
1回复

向UIScrollView添加文本

我正在UIScrollView创建一个卷尺,它具有来自图像的水平线,我想以编程方式添加数字。 (请注意,蓝色是为了帮助正确放置布局) 我尝试了这个: 哪个可行,但使用大约40Mb的RAM。 我以为在CATextLayer中添加文本可能会更有效,但是我无法使其正常工作:
1回复

添加权利文件

我需要将我的应用程序提交到App Store。 所以在我这样做之前,我使用Xcode's验证过程验证了我的应用程序。 提交验证时,需要将entitlement文件添加到项目中。 我无法创建此文件,因此我从另一个项目中拖动了一个entitlement文件并包含在我的文件中。 此enti
2回复

在UIPickerView中添加图片

UIImageView * one = [[UIImageView分配] initWithImage:[[UIImage分配] initWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathCo
10回复

添加一个简单的UIAlertView

我可以使用什么样的入门代码来制作一个带有“OK”按钮的简单UIAlertView?
2回复

如何将斜角添加到UITableViewCell

我需要在我的UITableViewCell上添加斜角(顶部为白线,底部为暗线)。 我已经添加了CAGradientLayer作为我的cell.layer的子视图。 不幸的是我不能使用UIImageView作为我的单元格的背景,所以这需要在代码中完成。 有什么建议? 谢谢! 这是我现
1回复

在我自己的班级中添加类别

我的AppDelegate类具有很多方法。 在尝试组织这些方法时,我试图将这些方法中的一些归类。 所以现在我有了这些文件: AppDelegate.h AppDelegate.m AppDelegate中+ GameCenter.h AppDelegat