2012-03-04 10 views
6

Planuję wysłać aplikację CoreData, ale nie jestem pewien, czy wprowadzono funkcjonalność iCloud. To pytanie pojawiło się po tym, jak testowałem wersję beta aplikacji na iPhonie, wypełniając odpowiednie dane. Następnie dodałem funkcjonalność iCloud i rozpocząłem testowanie na iPadzie. Odkryłem, że tylko nowa pozycja była synchronizacja między urządzeniami, to są tentatives robiłam:Przedstawiam iCloud w aplikacjach CoreData po dostarczeniu, jak migrować stare dane

  • Praca na iPhone, należy wypełnić dane, włącz iCloud, rozpocząć pracę nad pustym iPad

Ale mam jakiś dziwny problemy, takie jak elementy podrzędne związane z niewłaściwym rodzicem. Potem próbowałem tego.

  • wywozowe dokumenty aplikacyjne z iPhone i importu w iPadzie

w tym przypadku dane są takie same w obu urządzeniach, ale nadal nie był w stanie zsynchronizować stare dane, a nowy uzyskać idealnie sync przez większość czasu po sekundach.

Rozumiem, że synchronizacja CoreData odbywa się z wymianą dzienników transakcji, więc może być oczywiste, że stare dane nie zostaną zsynchronizowane. Ale w tym miejscu pytam, czy ktoś już napotkał ten problem, który wydaje mi się dość powszechny, lub jeśli czegoś brakuje, jakieś ustawienia lub linie kodu, aby działało zgodnie z oczekiwaniami.

+0

Uwielbiam mieć odpowiedź na ten. Ziarno już istniejącej bazy danych w całym usłudze iCloud jest czymś, co nie zostało wyjaśnione. Mogę myśleć o atakach hakerów, ale nic prostego. –

Odpowiedz

5

Nie sądzę, że coś przeoczyłeś. Podstawowy problem polega na tym, że posiadanie wstępnie zaopatrzonej bazy danych nie jest obsługiwane przez iCloud. To coś, co też mnie niepokoi. Z Doc

https://developer.apple.com/library/ios/#releasenotes/DataManagement/RN-iCloudCoreData/_index.html

You should not seed initial content with a prepackaged database file. Instead, you should create the default items in code, or use NSPersistentStoreCoordinator's migratePersistentStore:toURL:options:withType:error: method to migrate a prepackaged database to the required location.

nie próbowałem za pomocą migratePersistentStore: ... metoda jeszcze za moją pracę, ale kluczem wydaje się być fakt, że transmisja danych w poprzek rdzenia poprzez iCloud dzienniki transakcji opierają się na każdej transakcji od momentu narodzin bazy danych śledzonej przez mechanizm.

Założę się, że użycie migratePersistentStore: ... spowoduje, że duża plama transakcji zostanie trafiona w system.

Powiązane problemy