0

ビュー コントローラーで NSManagedObject のサブクラス、たとえば Person としてプロパティを設定して、コントローラーのメソッドで更新できるように、 person のインスタンスを指定することに興味があります。私はこのようにすることができますか?

// Viewcontroller.h

@implementation

@property (nonatomic, retain) Person* currentPerson;

@end

// ViewController.m

@implementation

@dynamic currentPerson;

-(void) doSomethingToCurrentPerson {
    currentPerson.SomeAtrribute=somevalue;
}  

@end

これが有効な方法ではないように思えますが、一意の識別子を設定し、CurrentPersonUniqueID をプロパティとして保存して KVC を使用することもできます。私が投稿した内容に沿って何かを取得する方法はありますか、それとも KVC アプローチに近いもの、またはまったく異なるものを使用したほうがよいでしょうか?

4

1 に答える 1

0

@dynamicに置き換えるまで、このコードは機能しません@synthesize。とが別の場所に実装されていることをコンパイラに伝えますが、そうではありません@dynamic-setCurrentPerson:-currentPerson

したがって、のゲッター/セッターが自動的@synthesize currentPersonに作成されます。であるという事実とはcurrentPerson何の関係もありません。PersonNSManagedObject

currentPersonまた、この名前で直接アクセスできないか、ゲッターを使用する必要があります。

self.currentPerson.attribute = something;
// or
[self currentPerson].attribute = something;

正しいコード:

// Viewcontroller.h
@implementation    
@property (nonatomic, retain) Person* currentPerson;
@end

// ViewController.m
@implementation
@synthesize currentPerson;

-(void) doSomethingToCurrentPerson {
    self.currentPerson.SomeAtrribute = somevalue;
}

@end
于 2012-08-29T18:48:07.017 に答える