CoreData MagicalRecord keeps failing methods on iPhone5

I am currently working with infrastructure MagicalRecord v2.3.0-beta.3 commit:d18e74fe435359238b9593c03e41c1ee0baa0b78

. I get 1 crash log (from Crashlytics

) on iPhone 5 all the time. The app is still under development. The crash log looks like this:

Thread : Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x38eee626 objc_msgSend + 5
1  Foundation                     0x2f06d02d -[NSError dealloc] + 60
2  libobjc.A.dylib                0x38ef3b6b objc_object::sidetable_release(bool) + 174
3  libobjc.A.dylib                0x38ef40d3 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 358
4  CoreFoundation                 0x2e67d481 _CFAutoreleasePoolPop + 16
5  Foundation                     0x2f0778e3 -[NSAutoreleasePool drain] + 122
6  CoreData                       0x2e4bdfbf -[NSManagedObjectContext save:] + 942
7  MyApp                          0x00162f9f __70-[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:]_block_invoke15 (NSManagedObjectContext+MagicalSaves.m:82) // here app crashes
8  CoreData                       0x2e5219cd developerSubmittedBlockToNSManagedObjectContextPerform + 88
9  CoreData                       0x2e521b13 -[NSManagedObjectContext performBlockAndWait:] + 114
10 MyApp                          0x00162e51 -[NSManagedObjectContext(MagicalSaves) MR_saveWithOptions:completion:] (NSManagedObjectContext+MagicalSaves.m:116)
11 MyApp                          0x000a2b0d -[SPNCoreDataHandler parseAndSaveDictionaryReturnOperationArray:withSaving:] (SPNCoreDataHandler.m:70)
12 MyApp                          0x00078f21 __102-[SPNApiHandler getAllDataWithDownloadingSuccessBlock:savingSuccessBlock:downloadStatus:failureBlock:]_block_invoke (SPNApiHandler.m:69)
13 MyApp                          0x000795b9 __66-[SPNApiHandler sendGetRequestWithPath:successBlock:failureBlock:]_block_invoke (SPNApiHandler.m:174)
14 libdispatch.dylib              0x393cdd53 _dispatch_call_block_and_release + 10
15 libdispatch.dylib              0x393cdd3f _dispatch_client_callout + 22
16 libdispatch.dylib              0x393d06c3 _dispatch_main_queue_callback_4CF + 278
17 CoreFoundation                 0x2e714641 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
18 CoreFoundation                 0x2e712f0d __CFRunLoopRun + 1308
19 CoreFoundation                 0x2e67d729 CFRunLoopRunSpecific + 524
20 CoreFoundation                 0x2e67d50b CFRunLoopRunInMode + 106
21 GraphicsServices               0x335ec6d3 GSEventRunModal + 138
22 UIKit                          0x30fde871 UIApplicationMain + 1136
23 MyApp                          0x0009c347 main (main.m:16)

      

And here is the code I wrote:

NOTE. I've removed some parts of this method for readability (that's why the method returns void instead of NSArray).

- (NSArray *)parseAndSaveDictionaryReturnOperationArray:(NSDictionary *)dictionary withSaving:(BOOL)saveSynchrounously {

    [self truncateAll]; //method which removes all entries in coreData

    /* methods below creates entities from array given in dictionary
       using [NSManagedObject MR_createEntity] method 
       e.g. Contact *contact = [Contact MR_createEntity]; */

    [self saveContacts:dictionary[@"contact"]];
    [self savePeople:dictionary[@"person"]];
    [self saveBuildings:dictionary[@"place"]];
    [self saveSessions:dictionary[@"session"]];
    [self saveLectures:dictionary[@"program"]];
    [self savePartners:dictionary[@"partners"]];
    [self saveSponsors:dictionary[@"sponsors"]];
    [self saveExhibitorsPlans:dictionary[@"exhibitorplan"]];
    [self saveMeetingPlans:dictionary[@"meetingplan"]];
    [self saveOrganizationalInformation:dictionary[@"info"]];

    [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

    //continue executing method...
}

      

I also tried using the method [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreWithCompletion:]

, but it will work too.

In another Stackoverflow question, someone suggested that the crash could be caused by deleting, creating and saving for many objects at the same time. In my case, this is about 200 deleted objects + 200 new ones. Could this crash?

On other devices (iPhone 4s, iPhone 5s, iPad 2, iPad4, iPad mini) it works fine. Any ideas what I am doing wrong?

+3


source to share


1 answer


Finally I found out what was going on. The tester did not uninstall or install the app as I said. A Crash message appears because the DB schema has changed. Perhaps I should start thinking about the DB version during development to avoid such problems.

Thanks everyone for the answers.



0


source







All Articles