coredata ios8崩溃

coredata ios8崩溃,ios,objective-c,core-data,ios8,Ios,Objective C,Core Data,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

保存时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中工作


有没有人有同样的车祸

一些nsstring附加了一个nil值

我在iOS 8模拟器上也看到了这个确切的错误,我无法找出我做错了什么。我可以通过使用@try/@catch来解决这个问题,但我更想知道冲突在哪里,或者我是否做错了什么


@Ryan-你有可以在这里发布的苹果问题/链接吗?示例项目如何?

仅总结帮助我解决此问题的评论:

  • 这似乎是与有序多对多关系相关的核心数据中的一个缺陷
  • 如果您必须保留ordered选项,那么似乎有一个解决方法:将关系双向排序(谢谢@Fabio Ritrovato)

    • 我看到了同样的问题,并尝试应用@knl提到的解决方法。 然而,让这两种关系都井然有序似乎会产生严重的副作用

      我注意到,如果我调整一个实体中关系的顺序,它将打乱同一实体的其他对象中关系的顺序

      假设我们有两个实体,公司和员工。“公司”与“员工”之间存在一种关系,这是一种有序的多人关系。另一方面,“员工”与“公司”之间存在一种反向关系,称为“公司”,这也是一种有序的多人关系。(最初,Employee.companys只是一种对多关系,但后来我将其改为ordered-to-many关系,作为一种解决办法。)

      现在,假设有两个公司对象,A和B,我发现如果我改变A.employees中对象的顺序,B.employees中对象的顺序也会受到影响。我需要提到的是,A.employees在一个私有的子上下文中进行了调整,当子上下文被保存,因此更改被推回到父上下文时,B.employees就被修改了

      我添加了一些日志,看起来虽然这些更改只是在A.employees中进行的,但它确实触发了全球连锁效应。核心数据集成了A.employees中的每个对象(X),删除了X.companys中的所有公司对象,然后以任意顺序重新添加它们,这导致了我所说的问题


      我不知道这是核心数据中的错误还是设计的行为。如果这是一个bug,那么我可能需要向苹果报告它,但如果这是一个设计好的行为,那么还有什么解决办法

      这个错误似乎很明显。你有没有试着找出你的错误?如果是,你能显示代码吗?我遇到了同样的崩溃。你报了错误吗?是的,我报了错误。似乎只有在模拟器上才会出现碰撞。您是否在设备上复制了它?为了“修复”它,我只是在save调用中加入了一个try-catch:数据被正确保存。我只在iOS 8模拟器上遇到了相同的崩溃(设备很好)。它似乎与更新使用对多顺序关系的实体有关。我将尝试将其提取到一个示例项目中,并提交一份错误报告。我也在尝试修复相同的问题,目前我发现的解决方法是将反向关系也排序,但我仍然不清楚这是否是一个错误,因为该方法中存在一些错误……感谢您的回答。但是string类型的所有属性在我的模型中都是可选的。而且它在IOS7上使用相同的数据运行良好谢谢!在这个答案和我能够解决的问题之间,花了我一天的时间!非常感谢。谢谢我花了好几天的时间在这个问题上,由于您(和@Fabio Ritrivato)的解决方案,我终于摆脱了这个异常