問題タブ [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 投票する
2 に答える
2106 参照

iphone - コアデータの移行がエラーで失敗する:移行の最初のパス後に新しいストアを保存できませんでした

以前は、データモデルのバージョン1からバージョン2への自動移行を正常に実装していました。現在、SDK 3.1.3を使用すると、バージョン2からバージョン3への移行が失敗し、次のエラーが発生します。

未解決のエラーエラードメイン=NSCocoaErrorDomainコード=134110UserInfo= 0x5363360 "操作を完了できませんでした。(Cocoaエラー134110。)"、{NSUnderlyingError=エラードメイン=NSCocoaErrorDomainコード=256UserInfo = 0x53622b0 "操作を完了できませんでした。(ココアエラー256.) "; reason="移行の最初のパス後に新しいストアを保存できませんでした。"; }

を使用した自動移行と、のみを使用しNSMigratePersistentStoresAutomaticallyOptionNSInferMappingModelAutomaticallyOption移行を試しNSMigratePersistentStoresAutomaticallyOption、v2からv3へのマッピングモデルを提供しました。

上記のエラーがログに記録され、アプリケーションで使用できるオブジェクトがありません。ただし、アプリケーションを終了して再度開くと、すべてが正常に機能しています。

私が使用しているコアデータの方法は次のとおりです

シミュレーターでは、これによりMYAPP〜.sqliteファイルとMYAPP.sqliteファイルが生成されることがわかります。MYAPP〜.sqliteファイルを削除しようとしましたが、

常にNOを返します。どんな手掛かり?私は何か間違ったことをしていますか?前もって感謝します。

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

iphone - Core Data の軽量移行では、どのような変更を行うことができませんか?

私は最近、軽量の移行でさまざまなことを試しました。これらはすべて機能します:

1) 属性の名前変更 (名前変更識別子を指定)

2) 属性を追加する

3) 既存のエンティティに新しいエンティティ + 新しい属性 + 逆の関係を追加する

4) 既存のエンティティ + そのエンティティへの関係を削除する


= LM でほぼ何でも処理できるように見えます。私は何か見落としてますか?どのような場合に問題が発生し、より複雑なアプローチが必要になりますか?

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

iphone - 何十もの更新を伴う軽量の移行を使用すると、パフォーマンスが低下しませんか?

私が気付いたのは、アップデートを出荷するときに、モデルバージョンのスタック全体をそのままにしておく必要があるということです。誰かがデータが入力されたバージョン1.0を持っていて、その間にバージョンがなくてもすぐにバージョン5.0に更新した場合、どうなるかわかりません。したがって、移行では、その最初のデータモデルがどのようなものであったかも知る必要があります。あるいは、これはまったく機能しないかもしれません。わからない。

ただし、いくつかの変更を加えた後、最後のモデルが現在のバージョンである25のデータモデルがありました。ですから、私が推測するのは、永続ストアコーディネーターは、これらのバージョンを繰り返し処理し、段階的に違いを理解するために多くの作業を行うことになるということです。これはダメじゃない?回避策はありますか?

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

iphone - iPhoneOS コア データの移行: 何かをエンティティからファイルに移動する

コア データ エンティティに格納されている BLOB の内容をファイルに移動するシナリオがあります。移行中にそのデータをエクスポートする方法が必要です。変換中のエンティティがわかっている場合は、BLOB をファイルに保存し、そのファイルの場所を変換されたエンティティの適切な属性に書き込みます。

これを行う方法が見つからないようです。Three Stage Migration に関するドキュメントは、何ができるかを示しているようですが、どこで定義すればよいのか、正確に何を定義すればよいのかわかりません。

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

objective-c - CoreDataはマッピングモデルをカスタマイズします

次の状況をコアデータモデルのv1からv2にマッピングする際に問題が発生しました。

モデルのv1には、属性の作成者を持つbookという名前のエンティティがありました。そこで、著者の名前と名前、さらには数人の著者の名前と名前を保存しました。私が知っている非常に貧弱なデザインですが、それはそうだったのです。

モデルのv2では、モデルを改善し、属性firstnameとlastname、および予約する関係を持つエンティティ作成者を追加しました。関数(作成者の数と名前と名前を分離して返す)を呼び出し、その関数の出力に関して新しいエンティティを作成するような方法でマッピングモデルをカスタマイズする方法を知っている人はいますか?

ありがとうb00tsy

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

iphone - コア データの移行: 抽象エンティティの子へのフィールドの抽出

あるエンティティから抽象的なエンティティの子である別のエンティティにフィールドを移動する移行があります。私のモデルには、 の親であるThing抽象エンティティ に対して 1->M であるエンティティがあります。このようなもの:AbstractWidgetNewStuff

いくつかの属性を から に移動しThingています。同様の変更を行うための手順が記載されているブログ投稿NewStuffの手順に従っています。

構造上の変更を加えた新しいバージョンを作成し、ThingToNewThing と呼ばれるマッピングを含むマッピング モデルを作成しました。これはフィールドをマッピングしますが、関係はマッピングしません。AbstractWidgets は既に適切に機能するように設定されているため、関係を変更しませんでした。

アプリを実行すると、次のように始まる一連の内容がコンソールに送信されます。

...既存のデータプロパティのリストのように見えるものが続きます。

Cocoa エラー 134140 に関する情報がどこにも見つからず、どこに行けばよいかわかりません。

ガイダンスをいただければ幸いです。

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

core-data - CoreData は OSX フレームワーク バンドルでマッピング モデルを見つけることができませんが、iOS では正常に動作します

iOS アプリと iOS クライアントが通信するサーバーの両方で使用している CoreData ベースのデータ レイヤー (SQLite データストアを使用) があります。データ層 (objc コード + coredata モデル / マッピング定義) は、通常どおり iOS バンドルにコンパイルされ、OSX で使用するためのフレームワーク バンドルにコンパイルされます。

マッピング モデルを使用したデフォルトの移行で壁にぶつかっています。

iOSでは、問題なく動作します。新しいデータモデル バージョンを追加した後、初めてシミュレーターでアプリを実行するとaddPersistentStoreWithType:configuration:...、標準の Apple ドキュメントに従って呼び出すと、すべてのデータが移行されます。

OSX / PyObjC では、 で失敗しますPersistent store migration failed, missing mapping model。つまり、なんらかの理由で、マッピング モデル .cdm ファイルがそのバンドル内に存在していても見つかりません。

ソース/宛先/マッピング モデルをバンドルで検索して手動で指定し、NSMigrationManager を介して手動で移行を呼び出すと、すべて正常に動作します。

この時点で、iOS バージョンがマッピング モデルを見つけてデータストアを正常に移行できる理由がわかりませんが、バンドルにマッピング モデルが明確にあり、マッピング モデルが明らかに有効であるにもかかわらず、OSX / PyObjC バージョンではそれができません。手動で呼び出すと機能するためです。

CoreData がバンドル内の有効/適切なマッピング モデルを検索する方法についての洞察は、OSX でこれを機能させる方法を特定するのに役立ちます。

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

iphone - Core Dataの軽量移行:移行用のマッピングモデルを見つけられない、または自動的に推測できない

そこで、データモデルの新しいバージョンを作成し、以前はオプションだったフィールドをオプションではないものにしました(デフォルト値を指定)。ドキュメントによると、これは私の移行が軽量の自動移行に適格であることを意味するはずです。

また、ドキュメントに従って、ストアを開いたときにこれを可能にするオプションを追加しました。

ただし、アプリの起動時に、次のエラーが発生します。

「移行用のマッピングモデルが見つからないか、自動的に推測できません」。

ここでの問題が何であるかを誰かが知っていますか?どんな助けでもありがたいです...ありがとう!