0

CoreDataを使用するアプリを更新しています。フルバージョンでは、ユーザーが自分のデータをデータベースに保存できるようにしました(アプリは事前に入力されたデータベースにデータを入力します)。

このアプリはXcode4.2で作成されており、iOS 4.1の展開ターゲットを使用しているため、ARCやストーリーボードよりも前に作成されました。

ここで少し更新し、展開ターゲットを5.1に設定し、コードを最新のXcodeに適合させます。これで、ストーリーボードとARCを実装することになりました。これは、慣れており、このコードを管理する方が直感的であるためです。そこで、新しいプロジェクトを最初から始め、ストーリーボードを作成し、1.0バージョンからほとんどのものをドラッグしました。さらに、[ビルドフェーズ]タブの[ソースのコンパイル]と[バンドルリソースのコピー]に問題がなく、ドラッグしたものがすべて含まれていることを確認しました。

ただし、データベースで問題が発生しています。アプリを実行しようとするとクラッシュし、次のように表示されます。

'Cannot create an NSPersistentStoreCoordinator with a nil model'

ですから、ここで何が間違っているのかわかりません。CoreDataモデルを変更したくありませんでした。すべてが同じままであるため、エンティティや属性を追加または削除しませんでした。ですから、古いモデルを新しいプロジェクトにドラッグするだけで十分です。

ここに何か提案はありますか?それほど複雑ではないので、codeData全体を最初から簡単に書くことができますが、フルバージョンを作成してカスタムデータを保存しているユーザーは非常に腹を立てると思います。

どんな提案でも大歓迎です。前もって感謝します!

4

1 に答える 1

0

AppDelegate メソッドを確認する必要がありますmanagedObjectModel。モデルが取得されていることを確認してください (NSLogステートメントで確認してください)。ほとんどの場合、命名規則に関係しています。

NSString *modelPath = [[NSBundle mainBundle] 
    pathForResource:@"Model" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];

あなたのmodelPath.

また、モデルをインポートしたときに、実際にはすべてのファイルをインポートしなかった可能性があります。モデルは実際にはディレクトリと呼ばれYourModel.xcdatamodeld、最後の部分はdおそらく「ディレクトリ」を表します。Finder では、実際に右クリックして、必要なファイルがそこにあることを確認することを選択できますShow Package Contents(コマンド ラインを使用するとさらに効果的です)。YourModel.xcdatamodel内部には、 ( .)という名前のファイルがあるはずですd。その側には、少なくともcontent(場合によってはlayout)というファイルが必要です。これは単純な XML ファイルです。

これらすべてをプロジェクトにインポートしたことを確認してください。

于 2012-06-16T12:23:56.287 に答える