アプリ ストアにアプリがあり、ロギング サービスを使用してクラッシュ ログと関連するログ データを取得しています。断続的なクラッシュ (影響を受けるユーザーの数が少なく、ユーザーごとのクラッシュの数が少ない) が見られますが、困惑しています。
これらのクラッシュで何が起こるかは次のとおりです。
アプリが Core Data スタックを起動して初期化する
アプリは、次のコードを使用して NSPersistentStoreCoordinator に SQL ストアを追加しようとします (
storeURL
有効です)。NSDictionary *options = @{ NSMigratePersistentStoresAutomaticallyOption : @(YES), NSInferMappingModelAutomaticallyOption : @(YES) }; sqlStore = [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error];
このストアを追加するときに、次のいずれかのエラーが発生します:
NS エラー:
Domain=NSCocoaErrorDomain
Code=256 "The operation could not be completed. (Cocoa error 256.)"
UserInfo=0x1dd946a0 {NSUnderlyingException=authorization denied, NSSQLiteErrorDomain=23}
また
NS エラー:
Domain=NSCocoaErrorDomain
Code=256 "The operation could not be completed. (Cocoa error 256.)"
UserInfo=0xc6525d0 {NSUnderlyingException=disk I/O error, NSSQLiteErrorDomain=10}
この状態の後、アプリが機能するには SQL ストアが必要なため、アプリがクラッシュします。新しい storeURL を試すことで、この失敗を適切に処理しようとすることもできますが、ユーザーが既存のデータを失うことは望ましくありません。また、私はこの問題を個人的に再現したことはありません。影響を受けるユーザー数が少なく、クラッシュ ログに基づいて、影響が少ない問題であり、その後のアプリの起動時に再発することはないと考えています。
これらの状態をデバッグおよび防止/処理する方法についていくつかの提案をしてくれる Core Data の第一人者がそこにいることを願っています。私のコア データ スタック初期化コードは xcode プロジェクト ジェネレーターから直接作成されたものであり、永続ストア コーディネーターが (起動時に) 1 回だけ初期化され、この初期化でこのエラーが発生するという点で、同時実行の問題を除外しました。
関連する場合は、より多くのコード/情報を提供してください。
ありがとう!