簡體   English   中英

核心數據和iCloud(iOS5)

[英]Core Data & iCloud (iOS5)

將新的NSManagedObject添加到我的核心數據存儲后,我嘗試調用:

  if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { 

並得到以下異常(奇怪的是我沒有錯誤,結果也很肯定!)

2013-03-15 18:32:09.753尼克副本[28782:3407] CoreData:普遍存在:日志文件導出期間發生異常:NSInternalInconsistencyException保存通知內容:NSConcreteNotification 0x3891b0 {name = _NSSQLCoreTransactionStateChangeNotification; 對象=(URL:file://localhost/var/mobile/Applications/FCAF7FC6-7DC8-4E0B-A114-38778255CA90/Documents/MyApp.sqlite); userInfo = {“ _NSSQLCoreActiveSaveRequest” =“”; “ _NSSQLCoreTransactionType” = 2; “ _NSSQLCoreTransientSequenceNumber” = 1; }}

我可以從“保存”方法中捕獲所有異常,並且該應用程序運行良好。 只是想知道這是否真的可以保存,因為它感覺完全不安全。

編輯:嘗試刪除對象時的另一個異常:

Catched Exception: Failed to process pending changes before save.  The context is still dirty after 100 attempts.  Typically this recursive dirtying is caused by a bad validation method, -willSave, or notification handler.

安全嗎? 可能不是。 該錯誤表明底層普遍存在系統無法創建SQL日志文件。 這可能意味着它無法創建iCloud用來同步更改的事務日志。 捕獲並繼續意味着您的數據可能保存在本地,具體取決於框架代碼的細節。 但這幾乎可以肯定意味着這些更改不會被iCloud同步。 更糟糕的是,您很可能會因為相同的原因而無法再進行將來的保存。

我不確定第二個例外,但這很可能是第一個例外的副作用。

如果您嘗試在iOS5上使用Core Data的內置iCloud支持,這只是奇怪的,莫名其妙的錯誤的開始。 我已經做了大量的iCloud / Core Data工作,我真的不建議在iOS 5上使用它。即使iOS 6充其量也可以,但問題比iOS 5少。

不幸的是,我再也找不到該線程了,但是它告訴我必須確保始終僅在創建它們線程/ dispatch_queue中始終使用NSManagedObject類。

問題是,如果您確實從其他隊列訪問它,則在隨機間隔后它可能會工作或崩潰。

我確保只從專用的dispatch_queue調用NSManagedObject,此后沒有記錄任何奇怪的異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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