为什么在ios中将值设置为NSManagedObject时应用程序崩溃



嗨,在我的应用程序中,我正在为NSManagedObject设置值,而我正在尝试设置值,应用程序正在崩溃。这是代码和错误消息。

 NSManagedObject *object3 = [threadManagedObjectContext objectWithID:[object1 objectID]] ;
  for (int i=0;i<[array1 count];i++)
        {
            NSDictionary *keyValue=[array1 objectAtIndex:i];
            [object3 setValue:[[keyValue allValues] lastObject] forKey:[[keyValue allKeys] lastObject]] ;
        }

    Error: Terminating app due to uncaught exception 'NSGenericException', reason:was mutated while being enumerated

有人能帮我吗?

在您的代码(不是提供的)中,您在循环/迭代时更改集合。

示例(不允许):

for (MyClass *myClassObj in collectionOfMyClass) {
   [myClassObj setClassVar: aVar]
}

解决方案:

制作要设置的对象的临时集合。将它们全部放回循环之外。

NSMutableArray *tempArray = [[NSMutableArray  alloc] init];
for (MyClass *myClassObj in collectionOfMyClass) {
        [tempArray addObject:aVar];
 }
[myClassObj setClassVars: tempArray];
You can try below solution for updating the object...

NSManagedObject *object3 = [threadManagedObjectContext objectWithID:[object1 objectID]] ;
int i=0;
  for (NSDictionary *keyValue in array1) 
    {
       [[object3 setValue:[[keyValue allValues] lastObject] forKey:[[keyValue allKeys] lastObject]] ;i++;
    }
    NSError *error;
    bool result = [[fetchedResultsController threadManagedObjectContext] save:&error];
    if (!result) {
       NSLog(@" error saving context, %@, %@", error, error.userInfo);
    }

在循环/枚举的代码中,您正在设置值。。所以它正在崩溃。。。!

希望它能帮助你。。。。

最新更新