iOS替换对象索引错误
我是iOS开发新手,在替换ObjectAtIndex时遇到错误。我的密码有问题吗?请帮忙,谢谢iOS替换对象索引错误,ios,objective-c,nsdictionary,Ios,Objective C,Nsdictionary,我是iOS开发新手,在替换ObjectAtIndex时遇到错误。我的密码有问题吗?请帮忙,谢谢 self.myArray =array; for (NSDictionary *data in array) { NSString *fbid = [data objectForKey:@"id"]; for (int index = 0; index < self.myPersonArray.count; index ++) { for (IP_PERSON *person in
self.myArray =array;
for (NSDictionary *data in array) {
NSString *fbid = [data objectForKey:@"id"];
for (int index = 0; index < self.myPersonArray.count; index ++) {
for (IP_PERSON *person in self.myPersonArray) {
if ([person.UserDef2 isEqualToString:fbid]) {
[self.myArray replaceObjectAtIndex:index withObject:person];
break;
}
}
}
self.myArray=array;
用于(NSDictionary*数组中的数据){
NSString*fbid=[data objectForKey:@“id”];
for(int index=0;index
错误是:
由于未捕获的异常而终止应用程序,原因:'***集合在枚举时发生了变异。您不能同时使用快速枚举和变异集合,因此会出现错误消息。您可以求助于使用常用的for循环。您不能同时使用快速枚举和变异集合同时,也会出现错误消息。您可以使用常用的for循环。您正在迭代
数组
,它等于self.myArray
再往下看,您正在编辑此数组时执行以下操作:[self.myArray replaceObjectAtIndex:index with object:person];
要解决此问题,只需将self.array
作为原始数组的可变副本:
self.myArray = [array mutableCopy];
您正在迭代
array
,它等于self.myArray
再往下看,您正在编辑此数组时执行以下操作:[self.myArray replaceObjectAtIndex:index with object:person];
要解决此问题,只需将self.array
作为原始数组的可变副本:
self.myArray = [array mutableCopy];
您可以获取另一个临时数组并在该数组上迭代,因此您正在枚举和变异不同的数组
或者,您可以在不使用枚举器的情况下进行迭代,也可以使用带有起始索引、退出条件和增量的正则for循环,就像您在外部循环中所做的那样。您可以使用另一个临时数组并在该数组上进行迭代,因此您正在枚举和变异不同的数组 或者,您可以在不使用枚举器的情况下进行迭代,也可以使用带有起始索引、退出条件和增量的正则for循环,就像您在外部循环中所做的那样。您可以
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]
self.myArray =array;
for (NSDictionary *data in array) {
NSString *fbid = [data objectForKey:@"id"];
for (int index = 0; index < self.myPersonArray.count; index ++) {
for (IP_PERSON *person in self.myPersonArray) {
if ([person.UserDef2 isEqualToString:fbid]) {
[dictionary setObject:person forKey:@(index)]; //Notice this line
break;
}
}
}
}
你可以
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]
self.myArray =array;
for (NSDictionary *data in array) {
NSString *fbid = [data objectForKey:@"id"];
for (int index = 0; index < self.myPersonArray.count; index ++) {
for (IP_PERSON *person in self.myPersonArray) {
if ([person.UserDef2 isEqualToString:fbid]) {
[dictionary setObject:person forKey:@(index)]; //Notice this line
break;
}
}
}
}
不要让我们玩游戏来获取信息。错误是什么?我猜它是无法识别的选择器。Collection NSArray在枚举时发生了变异。不要让我们玩游戏来获取信息。错误是什么?我猜它是无法识别的选择器。Collection NSArray在枚举时发生了变异。这里有新的示例吗足够参考了。谢谢考虑到这个答案中的一个例子,整个讨论也很好,我在这里遗漏了什么吗?他使用的是通常的for循环,我没有看到任何快速枚举。@abbood
self.myArray=array;for(NSDictionary*数组中的数据)
@abbood yep,这个表单是最初的快速枚举,block way只是围绕它。很抱歉,这里有新的例子可供参考。谢谢考虑到这个答案中的一个例子,整个讨论也很好,我在这里遗漏了什么吗?他使用的是通常的for循环,我没有看到任何快速枚举。@abboodself.myArray=array;例如(NSDictionary*数组中的数据)
@abbood yep,此表单是原始的快速枚举,块方式只是围绕它。Hi Syed Absar,我遵循您的代码,但我得到以下错误“NSMutableDictionary”的任何可见@interface声明选择器“addObject:forKey:”抱歉,它是setObject,而不是addObject。Hi Syed Absar,我遵循您的代码,但我得到以下结果ing error No visible@interface for'NSMutableDictionary'声明选择器'addObject:forKey:'抱歉,它是setObject而不是addObject。嗨,ggmathur,当我更改为self.myArray=[array mutableCopy]时,我得到了无休止的结果。你知道为什么吗?谢谢,例如1234123411234123441234123411234…嗨,ggmathur,当我更改为self.myArray=[array mutableCopy],我得到了无休止的结果。你知道为什么吗?谢谢,例如1234123411234123441234123411234。。。。