My iOS application just crashed with a NSRangeException
on -[NSManagedObjectContext save:]
. Nothing else helpful anywhere to be found. How am I supposed to fix this? I don't get any memory address or anything that I can work with...
2015-04-22 14:16:38.078 heavenhelp[33559:1734247] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 6 beyond bounds [0 .. 5]'
*** First throw call stack:
(
0 CoreFoundation 0x0167f746 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x00f40a97 objc_exception_throw + 44
2 CoreFoundation 0x01553b73 -[__NSArrayM objectAtIndex:] + 243
3 CoreData 0x00859cf3 -[NSSQLCore recordToManyChangesForObject:inRow:usingTimestamp:inserted:] + 2531
4 CoreData 0x00856a0b -[NSSQLCore _populateRow:fromObject:timestamp:inserted:] + 2923
5 CoreData 0x00776e24 -[NSSQLCore prepareForSave:] + 1764
6 CoreData 0x00775e3d -[NSSQLCore saveChanges:] + 461
7 CoreData 0x0073f15e -[NSSQLCore executeRequest:withContext:error:] + 638
8 CoreData 0x0083ee75 __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke + 5349
9 CoreData 0x008492ff gutsOfBlockToNSPersistentStoreCoordinatorPerform + 191
10 libdispatch.dylib 0x035f4bef _dispatch_client_callout + 14
11 libdispatch.dylib 0x035d7b0d _dispatch_barrier_sync_f_invoke + 144
12 libdispatch.dylib 0x035d723f dispatch_barrier_sync_f + 105
13 CoreData 0x008383f7 _perform + 183
14 CoreData 0x0073ec8b -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 459
15 CoreData 0x0076ee09 -[NSManagedObjectContext save:] + 1529
16 heavenhelp 0x000b6834 _TF10heavenhelp11saveContextFT_T_ + 324
17 heavenhelp 0x0015368d _TFC10heavenhelp26ConversationViewController17viewWillDisappearfS0_FSbT_ + 701
18 heavenhelp 0x001536ef _TToFC10heavenhelp26ConversationViewController17viewWillDisappearfS0_FSbT_ + 63
19 UIKit 0x020a4292 -[UIViewController _setViewAppearState:isAnimating:] + 706
20 UIKit 0x020a4904 -[UIViewController __viewWillDisappear:] + 106
21 UIKit 0x020bcd1d -[UIViewController(UIContainerViewControllerProtectedMethods) beginAppearanceTransition:animated:] + 200
22 UIKit 0x020cafec -[UINavigationController _startCustomTransition:] + 1028
23 UIKit 0x020d8e00 -[UINavigationController _startDeferredTransitionIfNeeded:] + 712
24 UIKit 0x020d9a51 -[UINavigationController __viewWillLayoutSubviews] + 57
25 UIKit 0x02253750 -[UILayoutContainerView layoutSubviews] + 213
26 UIKit 0x01fce57a -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 668
27 libobjc.A.dylib 0x00f56771 -[NSObject performSelector:withObject:] + 70
28 QuartzCore 0x01d5ee47 -[CALayer layoutSublayers] + 144
29 QuartzCore 0x01d52925 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 403
30 QuartzCore 0x01d5277a _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
31 QuartzCore 0x01caec52 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 284
32 QuartzCore 0x01cb00e5 _ZN2CA11Transaction6commitEv + 487
33 QuartzCore 0x01cb07fc _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
34 CoreFoundation 0x015a086e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
35 CoreFoundation 0x015a07b0 __CFRunLoopDoObservers + 400
36 CoreFoundation 0x015961ea __CFRunLoopRun + 1226
37 CoreFoundation 0x01595a5b CFRunLoopRunSpecific + 443
38 CoreFoundation 0x0159588b CFRunLoopRunInMode + 123
39 GraphicsServices 0x046cc2c9 GSEventRunModal + 192
40 GraphicsServices 0x046cc106 GSEventRun + 104
41 UIKit 0x01f3b106 UIApplicationMain + 1526
42 heavenhelp 0x000a5c94 main + 180
43 libdyld.dylib 0x0361fac9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
This is the code I used to make my save:
thread-safe:
static var onceToken: dispatch_once_t = 0
static var singleton: CoreDataHelper!
static var sharedInstance: CoreDataHelper {
get {
dispatch_once(&onceToken, {
self.singleton = CoreDataHelper()
})
return singleton
}
}
My xcdatamodeld
(the relevant part):
Edits: I have edited the code to reflect my changes to make my NSManagedObjectContext
thread-safe. Everything I do now, I do on one instance of my CoreDataHelper
that I initialise as above. I have found I can trigger a crash by going into one conversation, adding a message, going into another conversation and adding a message there. I have added my xcdatamodeld
.
I had apparently set my one-to-many relationship between conversations and messages to "ordered". This was not correct... I had already changed my NSManagedObject's class to use NSMutableSet instead of NSMutableOrderedSet.
Apparently this results in an NSRangeException in the save method...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With