Question

I trying the full version of apportable and I have a problem with the CoreData:

I have the correct features at configuration.json:

"FEATURES": ["opengles2","landscape","prefer_external_storage","write_external_storage","write_settings"],
  1. Setting the storageURL where I want to store the DB:

     #ifdef ANDROID
     //tried many different locations but not luck, I think there is the problem
     NSURL *storeURL = [NSURL URLWithString:@"/data/data/com.bluepiggames.zombieSlice/files/Documents/ZS_SuperDatabase.db"];
     #else
     NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"ZS_SuperDatabase"];
     #endif
    
  2. Creating the persistenceCoordinatore:

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithBool:YES],
                                 NSMigratePersistentStoresAutomaticallyOption,
                                 [NSNumber numberWithBool:YES],
                                 NSInferMappingModelAutomaticallyOption, nil];
    
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
                     initWithManagedObjectModel: [self managedObjectModel]];
    
  3. Finally, these is the place where the app crash:

    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    //abort();
    

    And no error prompt in the debugger, only a crash like these.

    F/libc    (10177): Fatal signal 11 (SIGSEGV) at 0xe1a0d013 (code=1)
    D/dalvikvm( 7227): GC_CONCURRENT freed 387K, 12% free 6566K/7431K, paused 2ms+2ms
    D/IabHelper(10177): Querying SKU details.
    I/DEBUG   ( 8708): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    I/DEBUG   ( 8708): Build fingerprint: 'SoftWinnner/crane_a1002jhenergy/crane-a1002jhenergy:4.0.4/IMM76D/20120822:eng/test-keys'
    I/DEBUG   ( 8708): pid: 10177, tid: 10218  >>> com.bluepiggames.zombieSlice <<<
    I/DEBUG   ( 8708): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr e1a0d013
    I/DEBUG   ( 8708):  r0 63c40b68  r1 6412b13c  r2 6412b13c  r3 00000000
    

(EDIT) To solve this crash we must set the before:

  NSError *error = nil. //!!!!!
  if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])

Now the problem is in a different place:

// Returns the managed object model for the application.
// If the model doesn't already exist, it is created from the application's model.
- (NSManagedObjectModel *)managedObjectModel
{
    if (_managedObjectModel != nil) {
        return _managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"ZSDataModel" withExtension:@"momd"];
    NSLog(@"Test managedModel found %@",modelURL);

    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return _managedObjectModel;
}

And the error is because the DataModel compiled not found. Anybody knows how to put the compiled DataModel "DataModel.momod" inside a apportable project?

Thanks

Was it helpful?

Solution

sorry for such a late response, but i didn't want to let the question go unanswered. right now momd files aren't automatically added as assets. unfortunately, there's a manual step you'll need to do every time you update the xcdatamodeld.

  1. navigate to your simulator's Applications directory (e.g. ~/Library/Application\ Support/iPhone\ Simulator/6.1/Applications/<randomString>/<YourApp>.app/)
  2. navigate into the momd directory
  3. run the following in terminal: plutil -convert xml1 <ModelName>.mom -o <pathNearYourApprojFolder>/<ModelName>.mom
  4. in your configuration.json in the add_params dictionary, then in the assets array, add the path <pathRelativeToApprojFolder>/<ModelName>.mom of the file you converted with plutil
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top