問題タブ [mapping-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1921 参照

macos - 「ドキュメントが変更されました」という警告なしでコア データ スキーマを手動で移行しますか?

Core Data ドキュメント ベースのアプリ (10.5 のみ) のデータ モデルはフレームワーク内にあるため、Core Data マッピング モデルを使用した自動スキーマ アップグレードは機能していないようです。Core Data 機構は、アプリのメイン バンドルにない場合、適切なデータ モデルまたはマッピング モデルを見つけられないようです。そのため、自動移行を使用する代わりに、手動で移行を実行して configurePersistentStoreCoordinatorForURL:ofType:...います NSPersistenDocumentサブクラス (以下のコード)。永続ストアを一時ファイルに移行し、移行が成功した場合は既存のファイルを上書きします。ドキュメントは、「このドキュメントのファイルは、開いた後、または保存した後で、別のアプリケーションによって変更されました」というメッセージとともにエラーを表示します。保存しようとすると。このリストの他の人が指摘しているように、これはドキュメントのファイルを「背後で」変更したためです。以下に示すように、ドキュメントのファイルの更新日を更新しようとしましたが、「ドキュメント "test.ovproj" の場所を特定できません」というメッセージが表示されたエラー ダイアログが表示されます。保存しようとすると。このエラーの理由はよくわかりませんが、不要なメッセージ (この場合) を別のメッセージと交換することは、私が望んでいたことではありません。

誰でもガイダンスを提供できますか?これらの (この場合は不要な) 警告のいずれかをトリガーすることなく、ドキュメントの永続ストアのスキーマを手動でアップグレードする方法はありますか?

サブクラスのデータ ストアをアップグレードするためのコード -configurePersistentStoreCoordinatorForURL:ofType:...:

0 投票する
8 に答える
23656 参照

iphone - Xcode データ モデルに変更を加えた後も、「保存操作の失敗」が発生し続けます

Core Data を iPhone 開発に使い始めました。まず、1 つの文字列プロパティ (evaluationTopic と呼ばれる) を持つ非常に単純なエンティティ (Evaluation と呼ばれる) を作成することから始めました。新しい文字列を挿入するための次のコードがありました。

これは問題なく機能し、+ ボタンを押すと、新しい「My Repeating String」がテーブル ビューに追加され、永続的なストアに保存されます。

次に、Xcode で [デザイン -> モデル バージョンの追加] を押しました。既存のエンティティに 3 つのエンティティを追加し、既存の「評価」エンティティにも新しいプロパティを追加しました。次に、"File -> New File -> Managed Object Classes" を押してエンティティから新しいファイルを作成し、Evaluation.h および Evaluation を含む "Evaluation" エンティティを含む 4 つのエンティティ用に新しい .h および .m ファイルを作成しました。 .m. ここで、「デザイン - >データモデル - >現在のバージョンを設定」を設定して、モデルのバージョンを変更しました。これをすべて行った後、insertMethod を変更しました。

これはうまくいきません!行を追加するたびに、シミュレーターがクラッシュし、次のようになります。

データモデルで何かを変更した後、新しいバージョンを作成することを知る前にこのエラーが発生しましたが、なぜこれがまだ発生するのですか? マッピングを行う必要はありますか (以前は存在しなかったエンティティとプロパティを追加しただけでも)。Apple Dev チュートリアルでは非常に簡単に聞こえますが、私はこれに長い間苦労しており、モデルのバージョンを変更した後は機能しませんでした。

0 投票する
2 に答える
4021 参照

iphone - 複数のバージョン アップグレードにまたがるコア データの移行

Core Data を使用する iPhone アプリがあります。

更新を行い、Lightweight Migration を使用して MOM (Managed Object Model) の V1 から V2 に移行しました。これは完璧に機能しました。

MOM の V3 (およびそれ以降) に移行したい場合はどうなりますか?

  • 軽量移行を続行することにした場合、MOM の V1 から V3 および V2 から V3 への移行は自動的に処理されますか、それとも追加の操作が必要ですか?
  • マッピング モデルを使用する場合はどうなりますか? V1 と V2 の両方の MOM を V3 にアップグレードするにはどうすればよいですか? V1 から V3 および V2 から V3 の両方のマッピング モデルを作成する必要がありますか?
  • この質問はさらに続きます... V6 MOM を使用していて、V1 MOM からのアップグレードの可能性をサポートする必要がある場合はどうなりますか?

もう 1 つの質問は、現在の MOM のバージョンを確認する最善の方法は何かということです。isConfiguration:compatibleWithStoreMetadata を使用する必要がありますか:

ご協力ありがとうございます。私はコアデータが大好きです。しかし、頭がぐるぐるして混乱することもあるので、賢者の知恵を求めています。

0 投票する
1 に答える
1939 参照

objective-c - コアデータ移行での検証エラー

Mac OS X10.5でCoreDataを使用すると、非常に厄介なエラーが発生します。

すべてのエンティティには、同じ名前を共有するクラスがアプリケーションにあります。

これまで、問題なく5回の移行を実行しました。

XMLデータストアを使用しています。13個のエンティティを持つデータモデルのV5があり、そのうち4個は抽象です。次のようになります。 代替テキストhttp://synapticmishap.co.uk/ObjectModel.jpg

私がやること

  1. データモデルの新しいバージョンを作成します-これはV6です。

  2. 新しいエンティティ(JGToolbarWindow)を追加し、親をJGWindowBaseに設定します。

  3. V5からV6に移行するマッピングモデルを追加しました。保存しました。

  4. 現在のバージョンをV6に設定します。

  5. ビルドとデバッグ。

PersistentStoreCoordinatorオプションディクショナリで自動移行がオンになっています。

問題

  1. エラーを取得します-「複数の検証エラーが発生しました。」

  2. ブレークポイントを設定し、検証エラーを調べました。検証エラーの長いリストがあります-すべてのデータエントリに1つあるようです。

  3. すべての関係を取り除いているようです。私のプロパティの1つであるapplicationが必須に設定されているため、これは検証エラーとしてカウントされます。

  4. したがって、問題は、移行によって関係を移行できないことにあるようです...関係に関しては、明らかに何も変更されていませんが。

  5. 〜/ Library / Application Support / Name of my app /を見ると、同じ名前が.xml.newで追加されたXMLデータストアが表示されます。テキストエディターでこのファイルを見ると、すべての関係が実際に削除されています。アウト。

私が試したこと

  1. 新しいXMLデータストアを作成し、そこにいくつかのアイテムを入れてから、再試行します。各アイテムで同じエラーが発生します。

  2. クリーニングと再構築。

  3. 以前の検証からの古い.xml.newが削除されていることを確認してください。

  4. 新しいモデルバージョンを削除し、アクションを繰り返して、何かを台無しにしないようにします。

  5. デフォルトで無視される各抽象クラスのマッピングエントリを追加します。すべての属性と関係を追加しました。それでもまったく同じエラー。

  6. JGWindowBaseを親として持つNSManagedObjectに基づいて、クラスを持たない新しいエンティティを追加しようとしました。繰り返しますが、失敗しました。

変更されたと思うことができるのは、モデルの基礎となるクラスの内部ロジックの一部だけです。しかし、これらは小さな変更であり、どのようにうまく移行していたのか理解できません。今では、何も変更されていないように見えるときではありません。

名前が変更された最新のデータストアからの新しい移行を試しましたが、まったく同じ問題が発生します。つまり、データ移行を機能させるには、この問題を解決する必要があります。

エラー

下のpresentError行にブレークポイントを設定すると

エラーuserInfoを調べると、次のようなエラーがたくさん発生します。

po (NSArray *)0x67ebfd0

与える:

これはすべて、アイテムに接続されている関係が削除されたことを示しています。これは必須のプロパティであるため、検証エラーがあることがわかります。他の必須プロパティであるアプリケーションにも全体的な負荷があります。

私が見ているように、問題は検証エラー自体ではなく、関係をまったく移行していないように見えることです。

これで髪を抜いています。私は本当に、本当にいくつかの助けに感謝します。そして最後に、スターウォーズの引用:

「助けてください、StackOverflow。あなたが私の唯一の希望です。」

0 投票する
2 に答える
344 参照

cocoa - Core Data ストアの移行時に明らかにランダムにクラッシュする

Mac OS X Leopard アプリで Core Data SQLite ストアを移行しようとしています。移行自体は単純で、モデルのバージョン間でいくつかの変更があるNSEntityMigrationPolicyだけで、文字列操作を少し行うカスタムが 1 つあります。

99% の確率で、これは完全に機能します。ただし、時々EXC_BAD_ACCESSin objc_assign_strongCastunderでクラッシュしmigrateStoreFromURL: type: options: withMappingModel: toDestinationURL: destinationType: destinationOptions: error:ます。

この時点では、カスタム移行ポリシーは呼び出されていないため、それが原因ではないと思います。また、マッピング モデル ファイルを 3 回チェックしましたが、すべて問題ないようです。

キッカーは、同じファイルを再度移行しようとすると、通常は正常に動作することです。これのデバッグをどこから開始すればよいかわかりません。

0 投票する
1 に答える
1290 参照

cocoa - コアデータ:自己参照プロパティを持つエンティティの移行

私のCoreDataモデルには、2つの自己参照関係を持つエンティティShapeが含まれています。これは、4つのプロパティを意味します。1つのペアは1対多の関係(Shape.containedBy <->> Shape.contains)であり、もう1つのペアは多対多の関係(Shape.nextShapes <<->> Shape.previousShapes)です。それはすべてアプリケーションで完全に機能するので、自己参照関係は一般的に問題ではないと思います。

ただし、モデルを新しいバージョンに移行する場合、Xcodeは自動生成されたマッピングモデルのコンパイルに失敗し、次のエラーメッセージが表示されます。

'contains'は、自己参照プロパティの1つの名前です。とにかく、本当に大きな問題は、マッピングモデルを表示するときにエンティティマッピングを選択するとすぐにXcodeがクラッシュするため、このマッピングプロパティを見ることさえできないことです。だから私はここからどこへ行くのか本当に迷っています。自己参照プロパティを実際に削除できないので、コンパイルするマッピングモデルを手動で作成する必要があると思いますか?何か案は?

乾杯

0 投票する
4 に答える
3682 参照

iphone - コア データ移行マッピング モデルの問題

Core Data を使用してストレージを行う iPhone アプリがあります。デプロイに成功し、現在は 2 番目のバージョンに取り組んでいます。永続ストアがアップグレードされた時点でいくつかの非常に単純なデータ変換が必要になるデータ モデルで問題が発生したため、デフォルトの推論されたマッピング モデルをそのまま使用することはできません。

私のオブジェクト モデルは、バージョン 1.0 と 1.1 が隣り合った .xcdatamodeld バンドルに格納されています。バージョン 1.1 がアクティブ バージョンとして設定されます。デフォルトの移行動作を使用し、NSInferMappingModelAutomaticallyOption を YES に設定すると、すべて正常に動作します。私の sqlite ストレージは、モデルの 1.0 バージョンからアップグレードされ、もちろん、必要ないくつかの変換を除いて、すべてが良好です。

追加の実験的ステップとして、新しいマッピング モデルをコア データ モデル バンドルに追加しましたが、xcode が生成したものには変更を加えていません。アプリを (古いバージョンのデータ ストアで) 実行すると、次のようになります。

私は何を間違っていますか?管理対象オブジェクト モデルと永続ストア コーディネーターを取得するためのコードを次に示します。

0 投票する
1 に答える
985 参照

iphone - CoreData移行マッピングでエンティティを分割する方法

これは簡単なことのようですが、良い例を見つけることができませんでした。2つの別々のエンティティに分割したい単純なCoreDataエンティティがあります。Appleのドキュメントには、高レベルで記載されていますが(マッピングの概要)、新しい分割されたエンティティとの関係を元のエンティティに関連付けるために、実際のマッピングモデルがどのように見えるかは不明です。

0 投票する
1 に答える
246 参照

iphone - NSPropertyMappingはいつ使用しますか?

異なるデータモデル間のマッピングと関係がありますか?これは他のどのコアデータクラスに関連していますか?これがどこに属するのかは私にはあまり明白に見えません。データモデルをマージしますか?それとも、それは単なるスタンドアロンのものですか?

たとえば、NSPropertyMappingはいつ使用しますか?