在索引处向数组对象添加整数时出错(目标c)

时间:2017-10-03 06:56:54

标签: ios objective-c nsarray

在数组的索引处向对象添加一个整数时,我得到了一个错误"算术指向接口id的指针,这对于这个架构和平台并不是一个恒定的大小",没有'我知道如何解决它。 请帮忙。

我的代码是 -

 if (arrayTotalAmount.count>0) {
                     int sum = 0;
                    for (int i = 0; i<=arrayTotalAmount.count; i++) {
                     sum = (sum+[arrayTotalAmount objectAtIndex:i]);

    }

在第4行,我收到了这个错误。 感谢

2 个答案:

答案 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]);

    }