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】:索引超出范围当您尝试访问对象时会出现此错误 来自数组中不存在的索引。
在您的情况下,friendArray
s 计数似乎 inviteIndex 计数。
我认为问题出在这个逻辑的某个地方,[inviteIndex addObject:[NSNumber numberWithInteger:indexPath.row]];
inviteIndex
的检查计数。
【讨论】:
以上是关于Objective-c : 使用一个数组指向另一个数组的主要内容,如果未能解决你的问题,请参考以下文章
关于 subview 在 Objective-C 中保留 superview 的问题
如何使用objective-c在xcode中使用共享偏好? [复制]