Dane podstawowe nie mogły spełnić błędu dla obiektu po uzyskaniu trwałych ID

Dostaję dane z serwera WWW, przetwarzając je na kontekst podrzędnego prywatnego tła o nazwiebackgroundMOC. To dziecko amainMOC który jest powiązany z głównym interfejsem użytkownika, więc oszczędzając nabackgroundMOC wyzwala zmiany interfejsu użytkownika. ThemainMOC jest dzieckiem amasterMOC która jest prywatną kolejką tła powiązaną z trwałym magazynem, więc zapisywanie na urządzeniu głównym zapisuje na dysku.

Teraz otrzymuję dane, tworzę nowe obiektybackgroundMOC, a następnie zapiszbackgroundMOC (aby aktualizacje UI), zapiszmainMOC, (dzięki czemu mogę prawie zapisać na dysk) i zapisaćmasterMOC (dzięki czemu mogę w końcu zapisać na dysk). Problem polega na tym, że gdy obiekt pojawia się w interfejsie użytkownika za pomocą pobranego kontrolera wyników,objectId jest nadal tymczasowy.

Powoduje to problemy ze zduplikowanymi problemami z wierszami, gdzie jeśli otrzymam te same dane z serwera (przez przypadek), mójbackgroundMOC nie wie, że ten obiekt już istnieje, ponieważ nie przypisano mu stałego identyfikatora, więc tworzy inny obiekt. Po ponownym uruchomieniu aplikacji duplikat obiektu znika, więc wiem, że jest to tylko problem z mapowaniem identyfikatorów.

Więc pomyślałem, że mogę spróbować

[backgroundMOC obtainPermanentIDsForObjects:backgroundMOC.registeredObjects.allObjects error:nil];

przed zapisaniem w ogóle (próbowałem także po zapisaniu). Jednak z jakiegoś powodu wywołanie tej linii powoduje wyjątek:

CoreData nie może spełnić błędu ...

Jeśli masz jakieś wskazówki, które mogłyby mnie poprowadzić we właściwym kierunku, podziel się. Dzięki

Edytować: Ok, więc początkowo dzwoniłem do gettingPermanentIDsForObjects na backgroundMOC, który jest dzieckiem mainMOC, który jest dzieckiem masterMOC. Zmieniłem go, aby uzyskać identyfikatory na mainMOC, i rozwiązał wszystkie moje problemy (na razie). Czy nigdy nie miałem zadzwonić do acquPermIds w kontekście dziecka?

questionAnswers(2)

yourAnswerToTheQuestion