相关疑难解决方法(0)

核心数据executeFetchRequest抛出NSGenericException(集合在枚举时发生了变异)

我正在开发一个带有Core Data的iPhone应用程序.所有用户数据都应与我们的服务器同步.为此,我创建了NSOperation的子类,从我们的Web服务加载新数据并创建相应的托管对象.为了维护它们之间的关系,每个对象都使用remoteID(它是关系服务器DB的主键)进行传输.

假设有两个托管对象:Department < - >> Employee.同步工作如下:

  1. 从服务器加载所有部门.对于每个部门:创建一个Department对象并设置其remoteID.

  2. 从服务器加载所有员工.对于每个员工:创建Employee对象,获取相关部门(通过remoteID)并将其分配给员工.

获取部门会导致以下异常:

*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x69c8a10> was mutated while being enumerated.<CFBasicHash 0x69c8a10 [0x2d6d380]>{type = mutable set, count = 1424, 
entries => <A list of all newly created entities>

*** Call stack at first throw:
0 CoreFoundation  0x02d04919 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x02e525de objc_exception_throw + 47
2 CoreFoundation  0x02d043d9 __NSFastEnumerationMutationHandler + 377
3 CoreData        0x026225d0 -[NSManagedObjectContext executeFetchRequest:error:] + 4400
4 myApp           0x00059de4 +[AppFactory …
Run Code Online (Sandbox Code Playgroud)

iphone core-data

7
推荐指数
1
解决办法
7884
查看次数

收集<NSCFSet:0x1b0b30>在枚举时发生了变异.如何确定哪一套?

我正在做一堆核心数据插入,在20k左右插入后每1-2k保存一次我得到这个错误:

Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFSet: 0x1b0b30> was mutated while being enumerated.'
Run Code Online (Sandbox Code Playgroud)

我试图找出导致这种情况的NSSet.我已经完成了搜索,我代码中唯一的NSSets是处理核心数据关系的自动生成的.

我正在使用NSXMLParser,并为每个创建新实体的元素(如果匹配的实体尚不存在).

因此,我将创建一个州实体,然后填充所有城市实体,然后进行保存.这意味着州的NSSet*城市正在被添加,但我不明白为什么你不能这样做.

iphone core-data objective-c ipad

2
推荐指数
1
解决办法
5310
查看次数

标签 统计

core-data ×2

iphone ×2

ipad ×1

objective-c ×1