【问题标题】:Getting an error while adding a integer to array object at index (objective c)将整数添加到索引处的数组对象时出错(目标 c)
【发布时间】:2018-03-14 07:21:34
【问题描述】:

在将整数添加到数组索引处的对象时,我收到“指向接口 id 的指针的算术运算,这对于此体系结构和平台来说不是恒定大小”,不知道如何解决它。 请帮忙。

我的代码是 -

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

    }

在第 4 行中,我收到了该错误。 谢谢

【问题讨论】:

    标签: ios objective-c nsarray


    【解决方案1】:

    Objective C 数组只接受NSObject 类型。这意味着不可能将原始值插入NSArray。您收到错误是因为objectAtIndex 方法返回一个指向该NSObject 的指针,算术运算在指针上仍然有效,但问题是指针的大小为整数(32 位,64 位)可能在设备上有所不同.因此,解决方案之一是对指针 sum+(int)[arrayTotalAmount objectAtIndex:i] 进行类型转换,这对您的情况没有意义。

    您正在寻找的解决方案可能是sum+[[arrayTotalAmount objectAtIndex:i] intValue] 或类似的。假设该数组包含 NSNumber 对象。如果数组中的对象不是NSNumber,那么您的应用程序将在运行时失败,并显示一个错误,指出对象X 没有名为intValue 的方法,在这种情况下,您需要弄清楚如何转换对象X 到你的int

    【讨论】:

    • 感谢您的宝贵时间。我找到了答案:)
    • @Harsh 这与其他答案的解决方案相同。但是,由于您正在使用 Objective-C 中的数组,请注意,您可以使用 [arrayTotalAmount[i] intValue] 而不是 objectAtIndex:i。但在你的情况下,最好只是把循环转过来并使用for(NSNumber *number in arrayTotalAmount) sum += [number intValue];
    【解决方案2】:

    您只需要将数组对象转换为整数,然后添加即可。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2017-11-14
      • 2019-01-19
      • 2019-09-11
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多