Objective-c : 使用一个数组指向另一个数组

Posted

技术标签:

【中文标题】Objective-c : 使用一个数组指向另一个数组【英文标题】:objective-c : Use a array to point to another array 【发布时间】: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] ]; 结果相同。

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

【问题讨论】:

【参考方案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 的检查计数。

【讨论】:

以上是关于Objective-c : 使用一个数组指向另一个数组的主要内容,如果未能解决你的问题,请参考以下文章

关于 subview 在 Objective-C 中保留 superview 的问题

如何使用objective-c在xcode中使用共享偏好? [复制]

如何通过 C++ 中指向该数组的指针访问另一个类中的数组?

qt 中能不能用一个指向数组的指针对另一个数组赋值

如何在 STL 中使用指向向量的指针,就像我们在将数组地址传递给另一个函数时将指针分配给数组一样?

Objective-c:将目录复制到另一个