2011-09-15 6 views
17

(私の強調):デフォルトではコアデータの「プリミティブ」アクセサは何ですか? <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html" rel="nofollow noreferrer">Core Data Programming Guide</a>から

、Core Dataは、動的に効率的公共プリミティブ取得し、管理オブジェクトクラスのモデル化プロパティ(属性および関係)のための設定アクセサメソッドを作成します。

私はコアデータを使用して喜んmogeneratorてきたが、私はObjective-Cの上で開始してからアプリの提出が原因プライベートAPIの疑惑使用に拒否されてしまったまで、私は、これは何を意味するのかを見ていたことがありません。生成されたsetPrimitiveTypeValue:メソッドについての長い話ですが、私の質問については何もありません。

ガイドを読んでいるうちに、エンティティ属性のパブリックおよびプリミティブアクセサの考えがうかがいました。別の引用符が、さらに下:たとえば

、属性firstNameで実体を与え、Core Dataは自動的にfirstNamesetFirstName:primitiveFirstName、およびsetPrimitiveFirstName:を生成します。

プリミティブアクセサとは何ですか? NSNumberにラップすることなく、BOOL値を直接割り当てることができますか?もしそうなら、なぜモゲネレータは、すべての種類の<Attribute>Valueset<Attribute>Value:primitive<Attribute>ValuesetPrimitive<Attribute>Value:アクセサを生成するという問題を抱えていたでしょうか?

私は混乱しています、誰が私を助けることができますか?


関連した質問:

+0

誰かが[これに既に回答しました] [1]いい回答のように見えます。 [1]:http://stackoverflow.com/questions/5509106/why-would-i-need-to-use-a-primitive-accessor-methods-in-a-core-data-プロジェクト – Simon

答えて

10

を(答え) KVCまたはKVOの通知( 'willAccessValueForKey'など)は発行されません。パブリックメソッドはプリミティブメソッドを呼び出しますが、呼び出しをKVO呼び出しにラップします。したがって、オブジェクトの外側からは、一般的にパブリックメソッドを呼び出しますが、内部的な理由でオブジェクトのプロパティを使用する必要がある場合(たとえば、他のプロパティを検証または派生させるために)、プリミティブメソッドを使用して、すべての通知。それは私が興味を持っていますが、完全にに精通していない対象であると私は答え上の任意の訂正や明確化を歓迎したい。

+0

恐ろしい答え@jrturton。 [カスタムプリミティブアクセサメソッド](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html)を簡単に見たい場合は、このリンクを参照として追加するだけです。 #// apple_ref/doc/uid/TP40002154-SW5)を使用して、回答をバックアップします。 – Mick

+1

@Patt wowこれは私の最初のSO答えの一つであったに違いない!過去からの爆発... – jrturton

+0

@Mickそのリンクは廃止されました。 – ThomasW

0

をカスタムに関するjrturtonの答えカバー問題@

属性対1の関係アクセッサメソッド(public-accessorは簡単です)。内部に包まれなければならない、とminusSet :):完全対多の関係アクセサをサポートするほか

は、カスタム実装では、パブリック・アクセサはNSMutableSet法(unionSetとの組み合わせでプリミティブ・アクセサを呼び出す必要がありKVO法のペア(will ... did ...)。

関連する問題

 関連する問題