我正在做一个从XML文件中读取数据的iPhone应用程序,将它们转换为Core Data Managed Objects并保存它们.
应用程序工作正常,主要是在包含~150个对象的较小数据集/ XML上.我说的主要是因为10%的时间,我在尝试保存上下文时会从CoreData获得以下异常:
*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* -_referenceData64仅为抽象类定义.定义 - [NSTemporaryObjectID_default _referenceData64]!'
在更大的数据集(~2000)上,每次都会发生这种情况,但不是在同一个地方.它可能在第137个记录,第580个或最后一个记录中失败.我已经尝试移动保存点(每个对象,每10个对象,保存一旦所有对象都是alloc/init')但我总是点击上面的异常.
我用谷歌搜索了例外,看到有人遇到同样的问题,但没有看到任何解决方案.
我的下一步是将托管对象和关系简化为此错误停止并从那里构建以隔离问题的点.最后一招是放弃Core Data,直接存入sqllite.
感谢你的帮助!
我正在开发一个带有Core Data的iPhone应用程序.所有用户数据都应与我们的服务器同步.为此,我创建了NSOperation的子类,从我们的Web服务加载新数据并创建相应的托管对象.为了维护它们之间的关系,每个对象都使用remoteID(它是关系服务器DB的主键)进行传输.
假设有两个托管对象:Department < - >> Employee.同步工作如下:
从服务器加载所有部门.对于每个部门:创建一个Department对象并设置其remoteID.
从服务器加载所有员工.对于每个员工:创建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)