問題タブ [core-data-migration]

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 投票する
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 投票する
1 に答える
1290 参照

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

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

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

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

乾杯

0 投票する
9 に答える
23899 参照

ios - iPhoneコアデータ「自動軽量移行」

コア データ ストアを実装するアプリを更新しようとしています。エンティティの 1 つに属性を追加しています。

次のコードをデリゲート クラスに追加しました。

これは次の URL からのものでした: Doc

コードを実行すると、次のエラーが発生します。

2009-12-01 20:04:22.877

Shoppee[25633:207] エラー: エラー

ドメイン=NSCocoaErrorドメイン コード=134130

UserInfo=0x1624d20 "Operation could not be completed. (Cocoa error 134130.)" 2009-12-01 20:04:22.879 Shoppee[25633:207] 未解決のエラー エラー Domain=NSCocoaErrorDomain Code=134130 UserInfo=0x1624d20 "Operation could not be (Cocoa エラー 134130)", { URL = file://localhost/Users/Eric/Library/Application%20Support/iPhone%20Simulator/User/Applications/A8A8FB73-9AB9-4EB7-8F83-82F5B4467AF1/Documents/MyApp .sqlite; メタデータ = { NSPersistenceFrameworkVersion = 241; NSStoreModelVersionHashes = {アイテム = <869d4b20 088e5c44 5c345006 87d245cd 67ab9bc4 14cadf45 180251e9 f741a98f>; ストア = <47c250f4 895e6fd1 5033ab42 22d2d493 7819ba75 3c0acffc 2dc54515 8deeed7a>; }; NSStoreModelVersionHashesVersion = 3; NSStoreModelVersionIdentifiers = ( ); NSStoreType = SQLite; NSStoreUUID = "8DC65301-3BC5-42BE-80B8-E44577B8F8E1"; }; reason = "ソース ストアのモデルが見つかりません"; }

どうにかして元のデータ モデルを含める必要があるようですが、その方法がわかりません。助言がありますか?

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

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

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

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

mapping-model - Core Data Migration - 「ソース ストアを追加できません」エラー

私の iPhone アプリでは Core Data を使用しており、自動的に移行できないデータ モデルに変更を加えました (つまり、新しい関係を追加しました)。データ モデル バージョンを追加し ([デザイン] -> [データ モデル] -> [モデル バージョンの追加])、新しいデータ モデルの変更を新しいバージョン 2 に適用しました。次に、マッピング オブジェクト モデルを作成し、ソース モデルと宛先モデルを正しいデータ モデルに設定しました。 (それぞれ古いものと新しいもの)。

アプリを実行し、persistentStoreCoordinator を呼び出すと、アプリは次のように barfs します。

2010-02-27 02:40:30.922 XXXX[73578:20b] 未解決のエラー エラー Domain=NSCocoaErrorDomain Code=134110 UserInfo=0xfc2240 「操作を完了できませんでした。(Cocoa エラー 134110)」、{ NSUnderlyingError = エラー Domain= NSCocoaErrorDomain Code=134130 UserInfo=0xfbb3a0 "操作を完了できませんでした。(Cocoa エラー 134130。)"; reason = "ソース ストアを追加できません"; }

FWIW (あまり考えていません) また、persistentStoreCoordinator で通常のコード変更を行い、NSMigratePersistentStoresAutomaticallyOption と NSInferMappingModelAutomaticallyOption を使用しました (自動的に移行できる将来のデータ モデルの変更用)。さらに関連性があるのは、ファイル/リソース タイプが「momd」である initWithContentsOfURL を呼び出すことによって、私の managedObjectModel が作成されることです。

マッピング モデルのソース モデルとターゲット モデルの両方を更新し ([設計] -> [マッピング モデル] -> [XXX モデルを更新])、マッピング モデルを削除して再作成しようとしました。クリーニングして再構築しましたが、すべて役に立ちませんでした。上記のエラー メッセージが引き続き表示されます。

この問題をさらにデバッグまたは解決する方法についての指針/考えはありますか? これはビルド環境の問題のように感じられるため、コード スニペットは投稿していません (私のコードは非常に標準的です。マッピング モデルを使用して移行を処理するための通常のコア データ コードですが、役立ちます)。

どんな助けにも感謝します。

ありがとう

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

iphone - Core Dataの自動軽量移行から手動に切り替える方法は?

私の状況はこの質問に似ています。私は次のコードで軽量の移行を使用していますが、Appleドキュメントや他のSOスレッドからはかなりバニラです。CoreDataスタックを初期化するときにアプリの起動時に実行されます。

一部のユーザー、特に低速のデバイスでは、示された行のログでクラッシュが確認されています。

修正は、これを手動のマッピングと移行に切り替えることであることを理解しています。それを行うためのレシピは何ですか?私にとっての長い道のりは、すべてのAppleドキュメントを読むことですが、特にスキーマ移行のための良い例とチュートリアルがあったことを思い出しません。

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

core-data - 対一関係から対多関係へのコア データの移行

センサー (例: 温度 °C、圧力 kPa) からの測定値をサンプリングする展開済みのアプリがあります。ユーザーは実験を作成し、サンプルを収集できます。各サンプルは Run として保存され、Experiment から Run への 1 対多の関係があります。パフォーマンスのために、Run はデータ エンティティ (実際の生データが格納される場所) と対 1 の関係にあります。これにより、必ずしも大量のデータをロードすることなく、一部の実行属​​性をロードできます。

ほとんどのセンサーには複数の測​​定値があるため、実際にサンプリングされているすべてのデータを保存すると便利です。ただし、これは、Run <---> Data 関係が Run <-->> Data になる必要があることを意味します (Xcode の規則を使用するため)。

古い実行対 1 データ モデルから新しい実行対多データ モデルにデータを移行しようとしています。これは、マッピング モデルを使用して実行できますか? もしそうなら、誰かが例へのポインタを持っていますか? そうでない場合、それを行う方法の例へのポインタはありますか?

ポインタやアドバイスをありがとう。

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

iphone - マッピング モデルを使用してコア データ オブジェクト モデル間を移行する

私はかなり単純なスキーマを持っています。基本的に、Run <--> Data (Run には、ある種のセンサーからサンプリングされた温度などのデータが保持されます)。

現在、センサーは複数の測​​定値 (温度と湿度など) を持つことができるようです。そのため、1 つの実行に複数のデータ サンプルが含まれる場合があります。

したがって、<-->> サンプルとサンプル <--> データを実行します。(簡単にするために、今のところ Run <--> Data はそのままにしておきます。)

新しいマッピング モデルを作成すると、通常は機能しますが、新しいサンプルが作成されないこと、実行とサンプルの間、またはサンプルとデータの間に関係が確立されないことを除きます。

モデルを移行するためにマッピング モデルを取得しようとしていますが、生成されたマッピング モデルを少しでも変更すると、Cocoa エラー 134110 が発生します。

たとえば、"Sample" マッピング (ソースを持たない) を取得し、そのソースを "Run" に設定すると (Sample の逆関係を適切に "run" に設定できるようにするため)、マッピングはその名前を "RunToSample" に変更します。このマッピングでは、data と run の 2 つの関係が処理されます。data プロパティは自動的に次のように設定されます。

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "DataToData", $source.dataSet)

この例に従って、run プロパティを

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToRun", $source)

同様に、RunToRun の「サンプル」プロパティ マッピングを次のように設定します。

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToSample", $source)

および DataToData の 'sample' プロパティを使用して

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToSample", $source.run)

それで、何がうまくいかないのだろうか?「逆」関係を未指定のままにするなど、さまざまな順列を試しました。しかし、それでも同じエラー (134110) が引き続き発生します。

これは思ったよりずっと簡単で、基本的ではあるがマイナーな部分が欠けていると思います。また、NSEntityMigrationPolicy のサブクラス化と -createDestinationInstancesForSourceInstance: のオーバーライドを試みましたが、これらの努力はほとんど同じ結果に達しました。

ポインタや(関連する:-)アドバイスをよろしくお願いします。

編集: 簡単にするために、すべての関係をオプションとしてマークしました。とはいえ、最終的には別の選択をするかもしれません。

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

iphone - 軽量コア データ移行の検出

Core Data の自動軽量移行を正常に使用しています。ただし、移行中に特定のエンティティが作成された場合は、それにデータを入力したいと思います。もちろん、アプリケーションが起動するたびにエンティティが空かどうかを確認することもできますが、Core Data に移行フレームワークがある場合、これは効率が悪いようです。

軽量の移行がいつ発生するか (おそらく KVO または通知を使用して) を検出することは可能ですか?それとも標準的な移行を実装する必要がありますか?

を使用してみましたNSPersistentStoreCoordinatorStoresDidChangeNotificationが、移行が発生したときに起動しません。