2012-07-03 2 views
1

Я новичок в «Магической записи» и довольно новичок в программировании на iOS в целом. Я просто пытаюсь настроить все. Я следовал инструкциям в http://yannickloriot.com/2012/03/magicalrecord-how-to-make-programming-with-core-data-pleasant/, но вместо того, чтобы:SIGABRT при вызове [MagicalRecord setupCoreDataStackWithStoreNamed]

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [MagicalRecordHelpers setupCoreDataStackWithStoreNamed:@"MyDatabase.sqlite"]; 
    // ... 
    return YES; 
} 

Я думаю, что я использую более новую версию, которая изменяет AppDelegate на:

@implementation LSAppDelegate 
@synthesize window = _window; 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
    [MagicalRecord setupCoreDataStackWithStoreNamed:@"MyDatabase.sqlite"]; 
    return YES; 
} 

- (void)applicationWillTerminate:(UIApplication *)application{ 
    [MagicalRecord cleanUp]; 
} 
@end 

При запуске, я получаю SIGABRT на :

+ (NSManagedObjectModel *) MR_mergedObjectModelFromMainBundle; 
{ 
    return [self mergedModelFromBundles:nil]; 
} 

трассировка стека выглядит следующим образом:

#0 0x00011f7e in +[NSManagedObjectModel(MagicalRecord) MR_mergedObjectModelFromMainBundle] at /Developer/projects/demo/MagicalRecord/Categories/NSManagedObjectModel+MagicalRecord.m:33 
#1 0x00011eb4 in +[NSManagedObjectModel(MagicalRecord) MR_defaultManagedObjectModel]() 
#2 0x000147ca in +[NSPersistentStoreCoordinator(MagicalRecord) MR_coordinatorWithSqliteStoreNamed:withOptions:]() 
#3 0x000148fa in +[NSPersistentStoreCoordinator(MagicalRecord) MR_coordinatorWithSqliteStoreNamed:]() 
#4 0x00016546 in +[MagicalRecord(Setup) setupCoreDataStackWithStoreNamed:]() 
#5 0x000026eb in -[LSAppDelegate application:didFinishLaunchingWithOptions:]() 

Я понятия не имею, что я сделал не так, или что я могу сделать, чтобы исправить это. Есть идеи?

+0

Попробуйте положить строку 'setupCoreDataStackWithStoreNamed:' внутри @ try/@ catch и зарегистрировать описание исключения в части @catch. Если это может дать лучшую информацию об ошибках. –

+1

Конечно !! Большое вам спасибо за предложение. Проблема заключалась в том, что «невозможно объединить модели с двумя разными именами ...». Не знаю, почему. Несколько раз я начал свой проект и сделал резервную копию кода. Кажется, резервные копии объектов сущности были включены по какой-то причине. Как только я удалю копию, теперь она работает. Большое спасибо. –

ответ

2

Похоже, что у вас были проблемы с переносом основных данных. Отключение приложения от симулятора приведет к созданию новой базы данных SQLite, что удобно, когда вы меняете схему во время разработки.

Позже вы можете перейти на -setupCoreDataStackWithAutoMigratingSqliteStoreNamed, который обрабатывает тривиальные миграции, если вы создаете новую версию модели управляемого объекта. См. Model File Format and Versions для получения информации о том, как создавать эти версии.

+0

Привет, Отто, я запускаю исключение при попытке инициализировать MOC с помощью MR, можете ли вы мне помочь? вот мой пост, спасибо. http://stackoverflow.com/questions/17918169/assertion-failure-in-nsmanagedobjectcontext-mr-defaultcontext-when-trying – Malloc