所以我有一个多维的NSMutableArray。第一个数组保存的信息包括用户名,密码,名字,姓氏和电子邮件地址。

NSMutableArray *newUser = [[NSMutableArray alloc]init];
[newUser addObject:username];
[newUser addObject:password];
[newUser addObject:firstName];
[newUser addObject:lastName];
[newUser addObject:emailAddress];
int localUserID = 0;

然后将此阵列与所有其他用户一起添加到阵列中。
NSMutableArray *userArray = [[NSMutableArray alloc]init]; // app crash occurs on this line.
[userArray insertObject: newUser atIndex:localUserID];
localUserID++;

所以我的基本问题是,为什么NSMutableArray不喜欢与
atIndex:

行,但如果我使用它工作正常
[userArray addObject:newUser];

我只是简单地使用后面的一行,但是当我添加一个新用户时,它将与最后一行重叠。任何帮助深表感谢。

最佳答案

您使用的[NSMutableArray insertObject:atIndex:]错误。从docs:

此值[index]不得大于中的元素数
数组。

因此,如果您有一个空的可变数组,则只能插入位置0。此方法不会自动为您调整数组的大小。

如果只为某些索引提供值,那么NSMutableDictionary可能更适合您的任务。键将是索引,而值将是您的对象。无需调整数组大小,并且有引入错误的风险。

关于ios - iOS Objective-c insertObject:对象atIndex:index,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20555394/

10-12 06:15