coredata ios8崩溃

我在保存时遇到了CoreData崩溃:

2014-09-16 09:51:58.273 My_app[2678:105246] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString appendString:]: nil argument' *** First throw call stack: ( 0 CoreFoundation 0x00000001087413f5 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x00000001083dabb7 objc_exception_throw + 45 2 CoreFoundation 0x000000010874132d +[NSException raise:format:] + 205 3 CoreFoundation 0x000000010871274f mutateError + 159 4 CoreData 0x000000010672ae56 -[_NSSQLGenerator prepareMasterReorderStatementPart2ForRelationship:] + 118 5 CoreData 0x0000000106792fd8 -[NSSQLAdapter newCorrelationMasterReorderStatementPart2ForRelationship:] + 72 6 CoreData 0x00000001067a9751 -[NSSQLiteConnection writeCorrelationMasterReordersFromTracker:] + 817 7 CoreData 0x00000001067aa061 -[NSSQLiteConnection writeCorrelationChangesFromTracker:] + 65 8 CoreData 0x000000010679c617 -[NSSQLCore writeChanges] + 1351 9 CoreData 0x00000001066dfadf -[NSSQLCore saveChanges:] + 479 10 CoreData 0x00000001066b0ee4 -[NSSQLCore executeRequest:withContext:error:] + 484 11 CoreData 0x00000001067868f2 __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke + 4354 12 CoreData 0x000000010678e7ee gutsOfBlockToNSPersistentStoreCoordinatorPerform + 190 13 libdispatch.dylib 0x00000001091e27f4 _dispatch_client_callout + 8 14 libdispatch.dylib 0x00000001091c9848 _dispatch_barrier_sync_f_invoke + 365 15 CoreData 0x00000001067813d5 _perform + 197 16 CoreData 0x00000001066b0ac8 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 504 17 CoreData 0x00000001066d9d2d -[NSManagedObjectContext save:] + 1213 

相同的代码在ios7中工作。

有没有人有同样的崩溃?

只是总结了帮助我解决此问题的意见:

  • 这似乎是与有序的多对多关系有关的核心数据中的一个错误
  • 如果你必须保持有序的select,似乎有一个解决方法:使关系有序两种方式 (谢谢@Fabio Ritrovato)。

我也看到这个确切的错误在iOS 8模拟器,并不能找出我做错了什么。 我可以通过使用@ try / @ catch来解决这个问题,但是我宁愿知道冲突在哪里,或者如果我做错了什么。

@瑞安 – 你有苹果问题/链接,你可以在这里发布? 示例项目呢?

我看到了相同的问题,并试图应用@knl提到的解决方法。 但是,把这种关系看作是两种秩序都有严重的副作用。

我注意到,如果我在一个实体中调整了关系的顺序,就会扰乱同一个实体的其他对象的关系的顺序。

假设我们有两个实体,公司和员工。 “公司”与“员工”之间有“雇员”关系,这是一种有序的一对多关系。 另一方面,“员工”与“公司”,即“公司”有着相反的关系,这也是一种有序的多对多关系。 (起初Employee.companies只是一个多对多的关系,但是后来我把它改成了sorting对多关系作为一种解决方法。)

现在,假设有两个公司对象A和B,我发现如果我改变了A.employees中对象的顺序,B.employees中对象的顺序也会受到影响。 我需要提到的是,A.employees在一个私人子环境中进行了调整,当保存了子环境,并且这些变化被推回到父环境时,B.employees被改变了。

我添加了一些日志,似乎虽然只是在A.employees中进行了更改,但确实引发了全局连锁效应。 核心数据集成了A.employees中的每个对象(X),并删除了X.companies中的所有Company对象,然后以任意顺序再次将它们添加回来,导致我正在谈论的问题。

我不知道这是否是核心数据或devise行为的错误。 如果这是一个错误,那么可能我需要报告给苹果公司,但如果这是一个devise的行为,什么是另一种解决方法?

一些nsstring附加一个零值