1. ホーム
  2. objective-c

[解決済み] すべてのCore Data RelationshipはInverseを持たなければならないのでしょうか?

2022-04-25 06:46:43

質問

例えば、2つのEntityクラスがあるとします。 SocialAppSocialAppType

SocialApp 属性が1つあります。 appURL と1つのリレーションシップがあります。 type .

SocialAppType 3つのAttributeを持っています。 baseURL , namefavicon .

の行き先は SocialApp リレーションシップ type は、1つのレコードを SocialAppType .

例として、複数の Flickr アカウントの場合、複数の SocialApp レコードがあり、各レコードにはその人のアカウントへのリンクがあります。1つの SocialAppType Flickr"タイプの記録、そのすべて SocialApp のレコードが指し示すことになる。

このスキーマでアプリケーションをビルドすると、以下のような逆相関がないという警告が表示されます。 SocialAppTypeSocialApp .

 /Users/username/Developer/objc/TestApp/TestApp.xcdatamodel:SocialApp.type: warning: SocialApp.type -- relationship does not have an inverse

逆行列は必要か、その理由は?

どのように解くのですか?

実際のところ、インバースを持っていないためにデータが失われたことはありません - 少なくとも私が知っている限りでは。 ググってみると、使ったほうがいいようです。

<ブロッククオート

逆関係は、単に より整頓されるようになり、実際に Core Dataはデータを維持するために使用されます。 整合性を保つことができます。

-- Cocoa Dev Central

<ブロッククオート

通常 の関係は、両方向の関係であり 逆方向の関係を指定する を適切に設定します。Core Dataはこの の情報を使って、一貫性を保つことができます。 が変更された場合、オブジェクトグラフの リレーションシップの操作 "を参照 とオブジェクト・グラフの整合性」)。については の理由を説明します。 をモデル化しない方が良い場合があります。 両方向のリレーションシップ、および 発生する可能性のある問題 を参照してください。 リレーションシップ"

-- コアデータ・プログラミング・ガイド