1

エンティティの 1 つ (多数のエンティティがある) が異なる属性を持っていることを除いて、まったく同じ 2 つのモデル間のマッピング モデルをプログラムで (Lightweight Migration なしで) 作成したいと考えています。このエンティティを「人」と呼びましょう。そして、宛先モデルが持っているとしましょう

1) 「住所」という新しい属性を追加

2) 「eyeColor」という属性を削除

3) 「名前」と呼ばれる属性を保持する (つまり、何も行わない)

プログラムでこれらのモデル間に NSMappingModel をどのように作成しますか? 私はたまたま、これを自分で行うのに役立つかもしれない明確な質問をいくつか持っています。

Q1) "Person" 以外のすべてのエンティティに対して、変更されていない場合でもNSEntityMapping オブジェクトを作成する必要がありますか?

Q2) 新規作成中の「人物」の「住所」属性はどうすればいいですか?そのための NSPropertyMapping を何らかの形で作成する必要がありますか?

Q3) 「人物」の「名前」属性はどうすればいいですか?単に同じままであっても、そのために NSPropertyMapping を作成する必要がありますか?

Q4) "Person" に対応するNSEntityMapping の場合、"eyeColor" の NSPropertyMapping を作成して削除するのは適切な方法ではありませんか? または、「eyeColor」の NSPropertyMapping を作成する必要がありますか? はいの場合、このオブジェクトはどのように作成されますか?つまり、その目的が「eyeColor」を取り除くことであると判断するものは何ですか?

ドキュメントには NSMappingModels をプログラムで作成する方法の良い例がないため、これらの質問に自分で答えることができないことをお詫びします。Lightweight Migration の使用は許可されていないことに注意してください。これを手動で行う必要があります。

4

1 に答える 1

1

私はいつもXcodeの自動マッピング機能を使用してきましたが、それからも多くのことを学ぶことができるようです。ソースモデル(の一部)のモデルを作成し、バージョンを追加し、宛先モデルを反映するように変更して、マッピングモデルを生成します(メニュー[デザイン] >> [マッピングモデル])。次に、Xcodeが生成した.xcmappingmodelをcontrolキーを押しながらクリックし、パッケージの内容を表示するようにFinderに指示すると、すべてのマッピングを一覧表示するXMLファイルが内部にあります。xmlをガイドとして使用して、コードでプロセスを再作成するのに役立てることができます。幸運を。

于 2010-03-26T18:21:19.687 に答える