2011-08-04 10 views
5

To jest najdziwniejszy błąd. The internet sugeruje, że jest to problem związany z kierowaniem na Tigera; oprócz tego, że ja faktycznie kierowania iOS 3 i 4.Dane podstawowe: Sklep nie może zatrzymywać wystąpień obiektu (błąd kakao: 134020)

Error Domain=NSCocoaErrorDomain Code=134020 "The operation couldn\u2019t be completed. (Cocoa error 134020.)" UserInfo=0xc502350 {NSAffectedObjectsErrorKey=<PartRecommendation: 0x6a113e0> (entity: PartRecommendation; id: 0x6a0d0e0 <x-coredata:///PartRecommendation/tAE2B5BA2-44FD-4B62-95D7-5B86EBD6830014> ; data: { 
    "_rkManagedObjectSyncStatus" = 0; 
    name = "Thin canopy cover"; 
    part = nil; 
    partRecommendationId = 6; 
    partType = "0x6a07f40 <x-coredata:///PartType/tAE2B5BA2-44FD-4B62-95D7-5B86EBD683003>"; 
}), NSUnderlyingException=Store <NSSQLCore: 0x5f3b4c0> cannot hold instances of entity (<NSEntityDescription: 0x6d2e5d0>) name PartRecommendation, managedObjectClassName PartRecommendation, renamingIdentifier PartRecommendation, isAbstract 0, superentity name PartOption, properties { 
    "_rkManagedObjectSyncStatus" = "(<NSAttributeDescription: 0x6d37550>), name _rkManagedObjectSyncStatus, isOptional 0, isTransient 0, entity PartRecommendation, renamingIdentifier _rkManagedObjectSyncStatus, validation predicates (\n), warnings (\n), versionHashModifier (null), attributeType 100 , attributeValueClassName NSNumber, defaultValue 0"; 
    name = "(<NSAttributeDescription: 0x6d37c10>), name name, isOptional 1, isTransient 0, entity PartRecommendation, renamingIdentifier name, validation predicates (\n), warnings (\n), versionHashModifier (null), attributeType 700 , attributeValueClassName NSString, defaultValue (null)"; 
    part = "(<NSRelationshipDescription: 0x6d2e660>), name part, isOptional 1, isTransient 0, entity PartRecommendation, renamingIdentifier part, validation predicates (\n), warnings (\n), versionHashModifier (null), destination entity Part, inverseRelationship recommendation, minCount 1, maxCount 1"; 
    partRecommendationId = "(<NSAttributeDescription: 0x6d2e6d0>), name partRecommendationId, isOptional 1, isTransient 0, entity PartRecommendation, renamingIdentifier partRecommendationId, validation predicates (\n), warnings (\n), versionHashModifier (null), attributeType 100 , attributeValueClassName NSNumber, defaultValue 0"; 
    partType = "(<NSRelationshipDescription: 0x6d2e720>), name partType, isOptional 1, isTransient 0, entity PartRecommendation, renamingIdentifier partType, validation predicates (\n), warnings (\n), versionHashModifier (null), destination entity PartType, inverseRelationship partRecommendations, minCount 1, maxCount 1"; 
}, subentities { 
}, userInfo { 
}, versionHashModifier (null)} 

Dodaję dużo danych do danych Core zanim się ten błąd, ale ja znowu oszczędność dwa razy (raz w środku, a następnie na końcu). Po pierwszym zapisaniu wszystko jest w porządku, to drugi problem powoduje problem, więc opublikuję kod, którego używam po pierwszym, ale przed drugim.

Landscape *landscape = [Landscape object]; 

Type *type = [Type object]; 
type.name = @"tree"; 

MeasurementType *caliperType = [MeasurementType object]; 
MeasurementType *heightType = [MeasurementType object]; 

InventoryTree *inventoryTree = [InventoryTree object]; 
inventoryTree.landscape = landscape; 
inventoryTree.type = type; 

Assessment *assessmentTree = [Assessment object]; 
assessmentTree.inventoryItem = inventoryTree; 
assessmentTree.type = type; 
[[inventoryTree mutableSetValueForKeyPath:@"assessments"] addObject:assessmentTree]; 

Measurement *caliper = [Measurement object]; 
Measurement *height = [Measurement object]; 
caliper.type = caliperType; 
height.type = heightType; 
[[assessmentTree mutableSetValueForKey:@"measurements"] addObjectsFromArray:[NSArray arrayWithObjects:caliper, height, nil]]; 

for (PartType *pType in [PartType allObjects]) { 
    pType.type = type; 
     Part *treePart = [Part object]; 
     treePart.partType = pType; 
     [[assessmentTree mutableSetValueForKey:@"parts"] addObject:treePart]; 
     for (PartCondition *cond in pType.partConditions) { 
      cond.partType = pType; 
     } 
     for (PartRecommendation *rec in pType.partRecommendations) { 
      rec.partType = pType; 
     } 
} 

metod wygoda Dzwonię na podklasy NSManagedObject można znaleźć here.

Mam metody w innym miejscu w aplikacji (długo po tym uruchomieniu), które można dodawać/edytować/usuwać wszystkie podmioty wymienione powyżej. Błąd nie występuje za każdym razem na tym samym obiekcie.

Każda pomoc będzie bardzo ceniona! To jest podchwytliwe.

Odpowiedz

1

Okej, odkryłem, jaki jest problem.

W kodzie poprzedzającym to, co napisałem, użyłem obiektu seeder firmy RestKit do zaimportowania bazy danych z lokalnego pliku json, a następnie kontynuowałem dodawanie obiektów po ich uruchomieniu. Ale tak naprawdę nie przenosi obiektów do magazynu obiektów, dopóki nie zadzwonisz pod numer finalizeSeedingAndExit.

Wywołanie tej funkcji, aby wysiać pierwszą część moich danych, a następnie skomentować siewnik i ponownie uruchomić, naprawił ten dziwny, dziwny błąd.

9

miałem tego błędu w następującej sytuacji:

  • używam konfiguracje w moim CoreData Model. Każda jednostka jest przypisana do określonej konfiguracji.
  • Dodałem nowy podmiot i zapomniałem przydzielić go do jednej z konfiguracji.
  • To wydaje się powodować błąd kakao: 134020.

Po dodaniu nowego podmiotu do konfiguracji, wszystko działa poprawnie

12

Dla innych osób, które znajdują się na tej stronie za pomocą Google: Miałem podobny problem z przyczyną niezwiązaną z powyższym rozwiązaniem.

Kod, który spowodował błąd, zasiał magazyn, w którym używany był ten sam model zarządzanego obiektu z istniejącego magazynu.

niewłaściwy kod był

NSManagedObject *newObj = [[NSManagedObject alloc] initWithEntity:[obj entity] insertIntoManagedObjectContext:moc] 

Zamiast zrobić

NSManagedObject *newObj = [[NSManagedObject alloc] initWithEntity:[NSEntityDescription entityForName:obj.entity.name inManagedObjectContext:moc] insertIntoManagedObjectContext:moc] 

który może wydawać się zbędne, ale pozbył błędu dla mnie.

+0

Dzięki temu pomogło mi to. Wygląda na to, że to nie naprawi, ale tak się stało. Przypuszczam tylko, że w tekście podstawowych danych jest błąd. – Andrew

+0

Mężczyzna to zaoszczędził mi tyle czasu, pracował idealnie! – Shizam

+0

Dzięki za podpowiedź! –

Powiązane problemy