1

標準の移行を使用してコア データを更新しようとすると、エラー メッセージが表示されずにアプリがクラッシュします。これまでのすべての標準ログ メッセージがあります。

CoreData: sql: INSERT INTO ZENTRY(Z_PK, Z_ENT, Z_OPT, ZLOCATION, ZBOOKMARKED, ZCREATIONDATE, ZENTRYID, ZMESSAGE, ZSECTIONIDENTIFIER, ZTICDSSYNCID, ZVERSION) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
CoreData: sql: COMMIT
CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZISINPHOTOLIBRARY, t0.ZLARGETHUMBNAIL, t0.ZMOVIE, t0.ZORIGINALHEIGHT, t0.ZORIGINALIMAGE, t0.ZORIGINALWIDTH, t0.ZSCREENSIZEIMAGE, t0.ZTHUMBNAIL, t0.ZTYPE, t0.ZENTRY, t0.Z_FOK_ENTRY FROM ZMEDIA t0 

それ以上のログメッセージなしでホーム画面にクラッシュする前に、それは数秒間そのままです。

クラッシュ前のコードは次のとおりです。

persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
    NSError *error;
    NSDictionary *pscOptions = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                                [NSNumber numberWithBool:NO], NSInferMappingModelAutomaticallyOption,
                                nil];

次に、次の行でクラッシュします。

if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:pscOptions error:&error]) {

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    } 

その未解決のエラー行にさえ到達しません。

4

1 に答える 1

0

ここでの回答で説明したのと同じ問題が発生している可能性があります(新しいモデル バージョンを作成せずにモデルを変更しました)。

そして、@try @catch ブロックで問題のある行をラップして、次のように何がキャッチされるかを確認することができます。

@try
{
    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:pscOptions error:&error])
    {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    }
}
@catch(NSException* ex)
{
    NSLog(@"Exception: %@", ex);
}

問題を理解するのに役立ちます。

于 2012-12-14T10:48:41.817 に答える