1

你能帮我解决以下错误吗:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“-[__NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object”

array_Info = [[NSMutableArray alloc] init];
array_Info = [dict_Temp objectForKey:@"Children"];

NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:self.array_Info];

            int ran, arrayIndexing = 0;
            while ([temp count] != 0)
            {
                ran = arc4random();
                if(ran < 0)
                    ran*=-1;
                ran = ran % [temp count];

                if([temp count] == 1)
                    ran = 0;

                NSLog(@"%d  %d",arrayIndexing,ran);

                [self.array_Info replaceObjectAtIndex:arrayIndexing withObject:[temp objectAtIndex:ran]];

                [temp removeObjectAtIndex:ran];
                arrayIndexing++;
            }
4

2 回答 2

6

假设这array_Infoself.array_Info属性的支持变量,您应该将第二行更改为:

array_Info = [[dict_Temp objectForKey:@"Children"] mutableCopy];

这将为您提供replaceObjectAtIndex:withObject:调用所需的可变数组。

于 2013-04-12T20:28:48.963 回答
2

这似乎self.array_Info是一个不可变的数组。使其可变。

于 2013-04-12T19:59:47.597 回答