[英]crash on 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。
有沒有人有同樣的崩潰?
只是總結幫助我解決此問題的評論:
我也在iOS 8模擬器上看到這個確切的錯誤,無法弄清楚我做錯了什么。 我能夠通過使用@ try / @ catch來解決這個問題,但我寧願了解沖突的位置或者我做錯了什么。
@Ryan - 你有可以在這里發布的蘋果問題/鏈接嗎? 示例項目怎么樣?
我看到了同樣的問題,並嘗試應用@knl提到的解決方法。 然而,似乎以兩種方式訂購關系具有嚴重的副作用。
我注意到如果我在一個實體中調整關系的順序,它將弄亂同一實體的其他對象中的關系順序。
假設我們有兩個實體,公司和員工。 “公司”與“員工”有“雇員”關系,這是一種有序的多對多關系。 另一方面,“員工”與稱為“公司”的“公司”具有反向關系,這也是一種有序的多對多關系。 (最初Employee.companies只是一個多對多的關系,但后來我把它改為訂購多人關系作為一種解決方法。)
現在,假設有兩個公司對象A和B,我發現如果我改變A.employees中對象的順序,B.employees中對象的順序也會受到影響。 我需要提一下,A.employees在私有子上下文中被調整,當子上下文被保存並且因此更改被推回到父上下文時,B.employees被改變了。
我添加了一些日志,似乎雖然這些更改僅在A.employees中進行,但它確實觸發了全局鏈式效應。 核心數據集成了A.employees中的每個對象(X)並刪除了X.companies中的所有公司對象,然后以任意順序再次添加它們,這導致了我所說的問題。
我不知道這是核心數據中的錯誤還是設計行為。 如果這是一個bug,那么我可能需要向Apple報告,但如果這是一個設計行為,那么另一種解決方法是什么?
一些nsstring附加一個nil值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.