I get the following error:
'NSInvalidArgumentException', reason: "Illegal attempt to create a condition relationship between objects in different contexts
when running my iphone application. The relevant part of my model looks like this:
AssessmentTree -has one TreeCrown TreeCrown -has one TreeCrownCondition -has one AssessmentTree TreeCrownCondition -has many TreeCrowns
In the context of the context, I mentioned that this part of the model is designed so that the arborist can record the state of the crown of the tree. It stores a list of options for evaluating the crown of trees, which can also be edited by the user (So TreeCrownConditions contains parameters, and TreeCrown.condition indicates the specific choice made during the evaluation).
I have a UIPickerView that loads these parameters and associates the selected option with TestTree using the following code in didSelectRow: inComponent:
TreeCrownCondition *fc = (TreeCrownCondition *)[conditionArray objectAtIndex:[conditionPicker selectedRowInComponent:0]]; tree.crown.condition = fc;
When I run this, the first few times I select the option, everything is fine, but sometimes (usually after adding / editing / deleting the TreeCrownCondition parameter), the application will break into the above lines with the error that I posted at the beginning.
The error seems easy to fix, except that I use only one NSManagedObjectContext in my entire application. Each new controller captures it when it is loaded with the following code:
if(!managedObjectContext){ managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; }
I could not find a lot of information about this error or how to solve it, and of course I did not find anyone who would have this problem without using several contexts.
I can only assume that I have several contexts, but I do not see how this is possible. What am I missing?
Change 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'