【问题标题】:objective-c : Use a array to point to another arrayObjective-c : 使用一个数组指向另一个数组
【发布时间】:2014-11-11 10:56:51
【问题描述】:

我有两个可变数组。 “friendsArray”包含一个完整的 os 用户列表,“inviteIndex”包含其中一些用户的索引 (indexPath.row)(使用 uiswitch 按钮进入表列表)。

我将inviteIndex数组填为:

[inviteIndex addObject:[NSNumber numberWithInteger:indexPath.row]];

为了只有选定的用户,我这样做:

  for (int i =0; i< [inviteIndex count]; i++) {

        MyElement  *friend =[friendsArray objectAtIndex:[inviteIndex objectAtIndex:i] ];

        NSLog(@"BUTTON PRESSED %@", friend.friendId);

    }

但应用程序崩溃并显示消息:

[__NSArrayM objectAtIndex:]: index 400931632 beyond bounds [0 .. 4]'

我用过
MyElement *friend =[friendsArray objectAtIndex:(NSInteger)[inviteIndex objectAtIndex:i] ]; 结果相同。

有什么帮助吗? 提前致谢。

【问题讨论】:

    标签: ios nsmutablearray nsindexpath


    【解决方案1】:

    [inviteIndex objectAtIndex:i] 将返回一个 NSNumber 对象。您希望NSInteger NSNumber 对象中:

    for (int i =0; i< [inviteIndex count]; i++) {
    
        NSInteger index = [[inviteIndex objectAtIndex:i] integerValue];
        MyElement  *friend =[friendsArray objectAtIndex:index];
    
        NSLog(@"BUTTON PRESSED %@", friend.friendId);
    
    }
    

    【讨论】:

      【解决方案2】:

      索引超出范围当您尝试访问对象时会出现此错误 来自数组中不存在的索引。

      在您的情况下,friendArrays 计数似乎 inviteIndex 计数。

      我认为问题出在这个逻辑的某个地方,[inviteIndex addObject:[NSNumber numberWithInteger:indexPath.row]];

      inviteIndex 的检查计数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多