2017-02-15 8 views
0

複合キーの作成に必要なモデルがあります。 2つの主キー列のうちの1つが変更されたときにKVOを使用して複合キーを更新したいとします。私はKVOに登録するためにどのinitメソッドをオーバーライドするのか分からないようです。私はオーバーライドしました。Realm Cocoaでイニシャライザをオーバーライドする方法

- (id) init 
- (id) initWithValue:(id)value 
+ (instancetype) createOrUpdateInRealm:(RLMRealm *)realm withValue:(id)value 

と追加されたログステートメント。いずれもコンソールに表示されません。私はこれらのオブジェクトを作成するためにRealm + JSONを使用しています。

答えて

0

すでに永続化されているRealmオブジェクトを照会する場合は、公開されていないプライベートイニシャライザメソッドが使用されます。

@interface RLMObject() 

// unmanaged initializer 
- (instancetype)initWithValue:(id)value schema:(RLMSchema *)schema NS_DESIGNATED_INITIALIZER; 

// live accessor initializer 
- (instancetype)initWithRealm:(__unsafe_unretained RLMRealm *const)realm 
         schema:(RLMObjectSchema *)schema NS_DESIGNATED_INITIALIZER; 

@end 

あなたはこれらのメソッドをオーバーライドし、そこにオブザーバを取り付ける試みることができるが、私は可能であればということを回避しようとしているお勧めします。

私たちが通常お勧めするものは、別の方法で変更したプロパティを更新する個別のカスタムアクセサメソッドを実装し、そのロジックにリアクティブ変更ロジックを実装することです。

それ以外にも、Realmもrecently added the ability to add notification blocks to individual objects(コレクションとは対照的に)ですので、必要があればKVOを使用することをお勧めします。

+1

私はまだAPIを構築しているので、DTOに「compositeKey」フィールドを追加しました。これを処理するために私がRealmで何もしていないので、この質問に対する答えではありません。私はあなたの答えが誰かを助けることを望んで質問を残します。 – smokingoyster

関連する問題