Core Data - パスで最適化されたモデルのロードに失敗した
質問
iOS 9 beta 5 を搭載した iPhone 6 で Xcode 6 からアプリケーションを実行すると、コンソールにこれらのプリントが表示されます。
CoreDataです。パス '/var/mobile/Containers/Bundle/Application/0000000B-BDBC-0000-000B-0000FB00000B/Distribution.app/database.momd/database.omo' で最適化されたモデルのロードに失敗しました。
私はこれに関連する何かを見つけることができませんでした、誰かこのメッセージについていくつかの手がかりを持っていますか?
どのように解決するのですか?
この問題に遭遇したので、いくつか調べてみました。
私は Xcode 6.4 で構築していますが、以前のコア データは MyApp.ipa momd ディレクトリに .mom ファイルを生成しただけのように見えます。このスクリーンショットは、Xcode のいくつかのバージョンを見てきたプロジェクトからのものです。
すべての古いモデルのバージョンには、.mom ファイルしかないことに注意してください。今日、私は新しいモデル バージョンを作成しましたが、それには .mom と .omo ファイルの両方があります。
Xcode 6.4 (そしておそらくベータ 7.x バージョンの一部も) は、最適化されたバージョンのデータモデルを読み込む方法を知らないようです。
2015-10-16 11:11:42.563 MyAppName[1767:599635] CoreData: Failed to load optimized model at path '/var/mobile/Containers/Bundle/Application/D887D60B-FB28-4059-8167-F573460D98F8/MyAppName.app/MyDataModel.momd/MyDataModel3_0Analytics.omo'
という警告が6.4でコンパイルしたときに表示されます。しかし、Xcode の最新の app store バージョン (7.0.1) でアプリをコンパイルすると、この警告が表示されません。Mahesh のソリューションが機能している理由は、スキーマ全体を書き直すことで、アプリがアプリ バンドル内で探している .omo ファイルが作成されるからだと推測しています。
私の解決策は、core data で新しいデータ モデル バージョンを生成し、Xcode 7 でビルドすることでした。新しいモデル バージョンを作成することで、最適化されたモデル ファイルが作成されるようです。しかし、私のテストでは、このファイルが作成されても、Xcode 6.4 はまだエラーをスローします。私がXcode 7.0.1でそれを試してみるまで、警告は消えませんでした。
これは推測ですが、もしあなたが既存のプロジェクトを持っていて、新しいデータモデルのバージョンを作成せず、Xcode 7 でビルドした場合、.omo ファイルが見つからないため、警告を発しているのではと思います。しかし、データモデルをバージョンアップし、Xcode 6.4でビルドした場合、以前のXcodeバージョンでは最適化されたバージョンに対して正しく動作せず、たとえファイルがあっても読み込まれないようです。これらは私の観察に過ぎませんが。
私は、最適化されたモデル (.omo ファイル) があることを、次のようにしてロードすることを確認しました。 1. プロジェクトをアーカイブします。 2. .ipa の拡張子を .zip に変更します。 3. zip ファイルを展開します。 4. "payload"フォルダをクリックし、フォルダ内のアプリバンドル上で右クリック(またはcmdクリック)して "パッケージ内容を表示"を選択します。 5. .momdディレクトリをクリックすると、利用可能なすべてのマネージドオブジェクトモデルが表示されます。
.mom ファイルだけで、.omo ファイルがない場合、警告は完全に意味をなし、アプリは存在しないファイルを開くことができません。
私のテストでは、警告は情報提供のみのようでした。この警告が原因でクラッシュしたことは一度もありません。コア データは、最適化されたモデルを最初にロードしようとし、それが失敗した場合は通常の .momd モデルにフォールバックするようです。これは単なる私の推測に過ぎませんが。
ここにあるすべてが完全に正しいかどうかはわかりません。これは、この問題をデバッグしようとして、これまでに私が観察したことに過ぎません。他の誰かがもっと情報を提供できるのであれば、私はあなたの意見を歓迎します。
関連
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
dyld: ライブラリがロードされていません。エラーの解決
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] Objective-Cでデリゲートを作成するにはどうしたらいいですか?
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] コードサインエラーです。期限切れのプロファイルを削除した後、プロビジョニングプロファイルが見つからない
-
[解決済み] Swiftの配列を文字列に変換するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] UIViewに角丸をつける
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] iOS 13でダークモードをオプトアウトすることは可能ですか?
-
[解決済み] 16進カラーバリューの使用方法