Illegale Beziehung zwischen Objekten in verschiedenen Kontexten: aber ich habe nur einen Kontext?

Ich erhalte den folgenden Fehler:

'NSInvalidArgumentException', Grund: 'Unzulässiger Versuch, eine' Beziehungsbedingung 'zwischen Objekten in verschiedenen Kontexten herzustellen.

wenn meine iPhone App ausgeführt wird. Der relevante Teil meines Modells sieht folgendermaßen aus:

AssessmentTree
-has one TreeCrown

TreeCrown
-has one TreeCrownCondition
-has one AssessmentTree

TreeCrownCondition
-has many TreeCrowns

Aus Gründen des Kontextes möchte ich erwähnen, dass dieser Teil des Modells so konzipiert ist, dass ein Baumpfleger den Zustand einer Baumkrone aufzeichnen kann. Es speichert eine Liste von Optionen zum Bewerten der Baumkrone, die auch vom Benutzer bearbeitet werden können (TreeCrownConditions enthält also die Optionen, und TreeCrown.condition verweist auf die bestimmte Auswahl, die in einer Bewertung getroffen wurde).

Ich habe eine UIPickerView, die diese Optionen lädt und die ausgewählte Option mit dem AssessmentTree verknüpft, wobei der folgende Code in didSelectRow verwendet wird: inComponent:

TreeCrownCondition *fc = (TreeCrownCondition *)[conditionArray objectAtIndex:[conditionPicker selectedRowInComponent:0]];
tree.crown.condition = fc;

Wenn ich dies ausführe, ist beim ersten Mal, wenn ich eine Option auswähle, alles in Ordnung, aber manchmal (normalerweise nach dem Hinzufügen / Bearbeiten / Löschen einer TreeCrownCondition-Option) stürzt die App in den obigen Zeilen mit dem Fehler ab, den ich am Anfang gepostet habe.

Der Fehler scheint einfach zu beheben,auße dass ich in meiner gesamten App nur einen NSManagedObjectContext verwende. Jeder neue Controller erfasst ihn, wenn er mit dem folgenden Code geladen ist:

if(!managedObjectContext){
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}

Ich konnte nicht viele Informationen zu diesem Fehler oder zur Behebung des Fehlers finden, und ich habe auf keinen Fall jemanden gefunden, der dieses Problem hatte, ohne mehrere Kontexte zu verwenden.

Ich kann nur davon ausgehen, dass ich irgendwietu haben mehrere Kontexte, aber ich kann nicht sehen, wie das möglich ist. Was vermisse ich

Bearbeite Hier ist der Stack-Trace:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'condition' between objects in different contexts (source = <TreeCrown: 0x64b9f00> (entity: TreeCrown; id: 0x648db30 <x-coredata://6E17F271-7670-44EA-9901-5AB58DCA8AC7/TreeCrown/p3> ; data: {
    condition = "0x64e5c50 <x-coredata://6E17F271-7670-44EA-9901-5AB58DCA8AC7/TreeCrownCondition/p4>";
    images = "<relationship fault: 0x64d5e10 'images'>";
    recommendation = "0x64a5320 <x-coredata://6E17F271-7670-44EA-9901-5AB58DCA8AC7/TreeCrownRecommendation/p1>";
    tree = "0x6488f70 <x-coredata://6E17F271-7670-44EA-9901-5AB58DCA8AC7/AssessmentTree/p1>";
}) , destination = <TreeCrownCondition: 0xf218a40> (entity: TreeCrownCondition; id: 0xf215c20 <x-coredata://6E17F271-7670-44EA-9901-5AB58DCA8AC7/TreeCrownCondition/p2> ; data: <fault>))'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x029d5919 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x027ea5de objc_exception_throw + 47
    2   CoreData                            0x02461810 _PFManagedObject_coerceValueForKeyWithDescription + 1248
    3   CoreData                            0x02478245 _sharedIMPL_setvfk_core + 197
    4   CoreData                            0x0247bfe7 _svfk_0 + 39
    5   landscapes                          0x0000e569 -[AssessmentTreeCRViewController pickerView:didSelectRow:inComponent:] + 571
    6   UIKit                               0x004647aa -[UIPickerView _sendSelectionChangedForComponent:] + 100
    7   UIKit                               0x00602ed3 -[UIScroller _scrollAnimationEnded] + 130
    8   UIKit                               0x0050e792 -[UIAnimator stopAnimation:] + 467
    9   UIKit                               0x0050e557 -[UIAnimator(Static) _advance:] + 298
    10  GraphicsServices                    0x034c856d HeartbeatTimerCallback + 35
    11  CoreFoundation                      0x029b6d43 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
    12  CoreFoundation                      0x029b8384 __CFRunLoopDoTimer + 1364
    13  CoreFoundation                      0x02914d09 __CFRunLoopRun + 1817
    14  CoreFoundation                      0x02914280 CFRunLoopRunSpecific + 208
    15  CoreFoundation                      0x029141a1 CFRunLoopRunInMode + 97
    16  GraphicsServices                    0x034c52c8 GSEventRunModal + 217
    17  GraphicsServices                    0x034c538d GSEventRun + 115
    18  UIKit                               0x0047cb58 UIApplicationMain + 1160
    19  landscapes                          0x00001eb6 main + 104
    20  landscapes                          0x00001e45 start + 53
)
terminate called after throwing an instance of 'NSException'

Antworten auf die Frage(6)

Ihre Antwort auf die Frage