【发布时间】:2014-03-03 17:37:58
【问题描述】:
这应该很容易,但不知何故它不想为我工作。使用 iOS 7 和 XCode 5。 我要做的就是创建一个值从 1 到 100 的数组。
NSMutableArray *array;
for (int i = 0; i < 100; i++)
{
[array addObject:i];
}
这不起作用。我收到“ARC 不允许将 'int' 隐式转换为 'id'。 我明白了,我不能将原始类型添加到 NSMutableArray。
[array addObject:@i];
这也不起作用。我在程序中收到“意外的'@'”
[array addObject:[NSNumber numberWithInt:i]];
[array addObject:[NSNumber numberWithInteger:i]];
(无论哪种情况)这“有效”(编译)但它确实“无效”。问题在于 NSNumber 的值实际上不是 1-100。我得到的每一行是“147212864”、147212832、“147212840”……不是我想要的。
最后:
for (NSNumber *i = 0; i < [NSNumber numberWithInteger:100]; i++)
{
[array addObject:i];
}
这也无法编译。我在 i++ 上遇到错误。 “指向接口 'NSNumber' 的指针的算术运算,对于这个架构和平台来说,它不是一个恒定的大小”
关于如何在 obj-c 上做这个极其简单的事情有什么建议吗?
【问题讨论】:
-
至少,
@i应该是@(i) -
别忘了,在另一端,您需要在 NSNumber 上执行
intValue才能获得int。 -
@TooManyEduardos。那是因为你忘了分配和初始化你的数组。
-
或者从1循环到
<=100等 -
当你得到 "147212864", 147212832", "147212840" 是因为你错误地输出了值。很明显这些是指针值,而不是存储在这些位置的对象中的值.
标签: ios objective-c