2012-01-20 18 views
1

私はアプリケーションでCore Dataを実装しましたが、モデルオブジェクトからビューを作成する最適な方法を見つけようとしています。iOS - Core Dataエンティティからビューを作成する方法

私の猫モデルオブジェクトは、これらのプロパティがあります。

@property (nonatomic, retain) NSString * image; 
@property (nonatomic, retain) NSString * title; 
@property (nonatomic, retain) NSString * desc; 

私はUIImageとして画像を表示し、ラベルなどのタイトルと説明を表示する猫ビューを作成したいです。モデルプロキシを使用する必要がありますか?私はKVOも同様に関与すると思います。誰でもこのための良いチュートリアルを知っていますか?これは一般的な作業だと思われますが、私が見つけることができる唯一のチュートリアルはCore Dataだけであり、データからビューオブジェクトを作成する方法を説明していません。

答えて

2

1つの方法は、CatViewController(もちろんUIViewControllerを拡張)を作成し、 "Cat"オブジェクトをパラメータとして持つカスタムinitメソッドを定義することです。 "cat"オブジェクトをプロパティに保存します。次に、 "viewDidLoad"メソッドで、Catオブジェクトのデータを使用してビューのラベルとイメージを設定します。

@synthesize cat, titleLabel, descLabel, imageView; 

- (id)initWithCat:(Cat *)aCat { 
    self = [super init]; 
    if (self) { 
     self.cat = aCat; 
    } 
} 

- (void)dealloc { 
    [cat release]; 
    [super dealloc]; 
} 

- (void)viewDidLoad { 
    self.view.titleLabel.text = self.cat.title; 
    self.view.descLabel.text = self.cat.desc; 
    self.view.imageView.image = [UIImage imageNamed:cat.image]; 
} 
+0

私はあなたの言っていることを見ていますが、私の質問は、猫のモデルを関連付ける方法の詳細ですcatビューオブジェクトを使用したプロパティ。どのようにしてCatモデルのオブジェクトと関連付けるか、最初にCatビューを作成しますか? – soleil

+0

これはちょうど1回のロードです - 私は彼が彼のモデルの更新として彼の意見を更新したいと思う。 – bandejapaisa

+0

キー値を調べる。 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html – QED

2

あなたはControllerオブジェクトを使用して、あなたの猫Viewオブジェクトとあなたの猫Modelオブジェクトを関連付けます。

MVCでチュートリアルを参照する必要があります。

あなたはおそらくバインディングを念頭に置いています。モデルへの変更をビューにバインドする場所。ココアは、バインディングを持っていますが、唯一のMac OSで:

Cocoa Bindings

Cocoaバインディングは、iOSのではサポートされていません。代わりに、iOSはターゲットアクションモデルのわずかに変更されたバージョンを使用します。これにより、コード内のアクションをどのように処理するかが柔軟になります。またNSFetchedResultsControllerを見てみましょうPorting from Cocoa

:からだった

。これはあまりにも興味深いかもしれません。

独自のバインディングクラスを作成する必要があります。私が働いていた古いiOSプロジェクトに1つはあった。

Bindingクラスは、KVOを使用し、ソースキーパス、宛先キーパス、ソースオブジェクト、および宛先オブジェクトを持ちます。 initではKVOオブザーバをソース(モデル)にセットアップし、変更したときに、デスティネーションキーパスを使用してその変更をデスティネーション(ビュー)に伝播します。ビューとモデルが直接お互いに直接話し合ってはならないので(悪いMVC)

関連する問題