在数组的索引处向对象添加一个整数时,我得到了一个错误"算术指向接口id的指针,这对于这个架构和平台并不是一个恒定的大小",没有'我知道如何解决它。 请帮忙。
我的代码是 -
if (arrayTotalAmount.count>0) {
int sum = 0;
for (int i = 0; i<=arrayTotalAmount.count; i++) {
sum = (sum+[arrayTotalAmount objectAtIndex:i]);
}
在第4行,我收到了这个错误。 感谢
答案 0 :(得分:2)
Objective C数组只接受NSObject
类型。这意味着无法将原始值插入NSArray
。你收到一个错误,因为objectAtIndex
方法返回一个指向NSObject
的指针,算术操作仍然对指针有效,但事实是指针的大小为整数(32位,64位)设备可能有所不同。因此,其中一个解决方案是对指针sum+(int)[arrayTotalAmount objectAtIndex:i]
进行类型转换,这在您的情况下毫无意义。
您正在寻找的解决方案可能是sum+[[arrayTotalAmount objectAtIndex:i] intValue]
或类似。假设该数组包含NSNumber
个对象。如果数组中的对象不是NSNumber
,那么您的应用程序将在运行时失败,显示错误,指示对象X
没有名为intValue
的方法,在这种情况下您将需要了解如何将对象X
转换为int
。
答案 1 :(得分:1)
您只需要将数组对象转换为整数,然后添加它将适合您。
if (arrayTotalAmount.count>0) {
int sum = 0;
for (int i = 0; i<=arrayTotalAmount.count; i++) {
sum = (sum+[[arrayTotalAmount objectAtIndex:i] intValue]);
}