簡體   English   中英

在coredata ios8上崩潰

[英]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。

有沒有人有同樣的崩潰?

只是總結幫助我解決此問題的評論:

  • 這似乎是與有序多對多關系相關的核心數據中的錯誤
  • 如果你必須保留有序選項,似乎有一個解決方法: 雙向關系訂購 (感謝@Fabio Ritrovato)。

我也在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM