2011-12-19 43 views
0

我使用了新的CoreData Recipes項目(iPhoneCoreDataRecipes Sample Code)中的示例代碼來構建iCloud中的同步,在現有的iOS應用程序中使用CoreData SQLite「數據庫」與非常複雜的數據模型許多太多的關係(也許這是我的問題的原因或至少一個提示的一部分)。使用CoreData與iCloud的怪異錯誤

在此之前,應用程序工作正常,沒有任何有關數據庫的警告。

+[PFUbiquityPeerRange(UbiquityMethods) peerRangeForLocalPrimaryKey:inStoreNamed:andEntityName:inManagedObjectContext:](71): CoreData: Ubiquity: Error or too many ranges for entity named: Room, ranges: (
"<PFUbiquityPeerRange: 0x627e0c0> (entity: PFUbiquityPeerRange; id: 0x627c830 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p12> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e300> (entity: PFUbiquityPeerRange; id: 0x627cfc0 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p13> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e350> (entity: PFUbiquityPeerRange; id: 0x627cfd0 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p21> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e3a0> (entity: PFUbiquityPeerRange; id: 0x627d300 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p42> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e3f0> (entity: PFUbiquityPeerRange; id: 0x627d310 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p49> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e440> (entity: PFUbiquityPeerRange; id: 0x627cea0 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p66> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e490> (entity: PFUbiquityPeerRange; id: 0x627ceb0 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p69> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e4e0> (entity: PFUbiquityPeerRange; id: 0x627cec0 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p75> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e530> (entity: PFUbiquityPeerRange; id: 0x627d120 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p82> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e580> (entity: PFUbiquityPeerRange; id: 0x627d130 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p94> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e5d0> (entity: PFUbiquityPeerRange; id: 0x627d140 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p96> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e620> (entity: PFUbiquityPeerRange; id: 0x627d150 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p97> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e670> (entity: PFUbiquityPeerRange; id: 0x627d160 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p132> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e6c0> (entity: PFUbiquityPeerRange; id: 0x627d170 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p140> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e710> (entity: PFUbiquityPeerRange; id: 0x627d180 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p156> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e760> (entity: PFUbiquityPeerRange; id: 0x627d190 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p157> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e7b0> (entity: PFUbiquityPeerRange; id: 0x627cd10 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p163> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e800> (entity: PFUbiquityPeerRange; id: 0x627cd20 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p177> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e850> (entity: PFUbiquityPeerRange; id: 0x627cd30 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p186> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e8a0> (entity: PFUbiquityPeerRange; id: 0x627cd40 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p192> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e8f0> (entity: PFUbiquityPeerRange; id: 0x627cd50 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p198> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e940> (entity: PFUbiquityPeerRange; id: 0x627cd60 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p199> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e990> (entity: PFUbiquityPeerRange; id: 0x627cd70 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p217> ; data: <fault>)", 
"<PFUbiquityPeerRange: 0x627e9e0> (entity: PFUbiquityPeerRange; id: 0x627cd80 <x-coredata://A3F63A39-9034-4F81-8B35-911CC481B6C5/PFUbiquityPeerRange/p222> ; data: <fault>)") 
, error: (null) 

引發錯誤的很多的,我收到一個內存警告,然後應用程序崩潰:但現在當我添加實體上下文或嘗試將其保存調試器都瘋了,像這樣的錯誤。我花了很多時間,但找不到有關UbiquityMethods新增內容的任何內容,或找出錯誤的實際原因。再說一遍:在使用CoreData Recipes示例項目中的代碼創建NSManagedObjectContext和NSPersistantStoreCoordinator之前,應用程序工作得很好。

我會很感激任何幫助,當然我會讓你瞭解最新的話題!

最佳 本傑明

+0

您確定您已正確連接到iCloud嗎?看看這個SO問題 - http://stackoverflow.com/questions/7768528/im-not-getting-the-nspersistentidimportubiquitouscontentchangesnotificati它幫助我從iCloud獲取更新(現在我正在努力合併來自iCloud的更改) – 2011-12-20 09:47:50

回答

0

檢查配置您的NSPersistentStoreCoordinator比如當你正確設置你的權利文件密鑰,並設置正確的價值觀爲NSPersistentStoreUbiquitousContentNameKey和NSPersistentStoreUbiquitousContentURLKey鍵。請參閱I'm not getting the NSPersistentStoreDidImportUbiquitousContentChangesNotification (with code sample)樣本

+0

我有點解決了我提到的問題。我認爲原因是我第一次啓動應用程序時預先填充了大量數據。現在,我在開始時將它留空,錯誤消失(現在面臨一些新的錯誤,但最終可以同步某些內容)。 – 2012-01-04 12:50:29

+0

我也有預填充數據的問題。我需要用默認的「類別」預先填充數據庫。如果互聯網連接速度較慢(例如3G),則第二個設備在一段時間後將具有2組相同的類別。可能我會嘗試介入合併程序並檢查類別的名稱。你有什麼新問題? – 2012-01-18 15:13:41

+0

這裏是我現在所做的:如果iCloud將首次啓用,我創建兩個上下文。一個用於舊數據庫,另一個用於啓用新iCloud的數據庫。然後我將所有舊數據傳輸到新的上下文中(需要大量的遷移代碼)。在從零開始的第二臺設備上,經過一段時間後(通常只有幾秒鐘),所有數據都會出現。這解決了預填充數據庫的問題。當iCloud開始同步時,我仍然會收到內存警告,特別是在iPod touch 4g上。我仍在檢查是什麼原因,也許是我的錯。 – 2012-01-30 12:26:56