« iphone 開発 サンプル「CoreDataBooks」を読む。 1 | トップページ | iphone 開発 サンプル「CoreDataBooks」を読む。3 »

2010年6月23日 (水)

iphone 開発 サンプル「CoreDataBooks」を読む。2

サンプル「CoreDataBooks」を読む。2

「概要」
サンプル「CoreDataBooks」を読む。1のつづき。

iphoneアプリの開発者向けサイトのサンプル「CoreDataBooks」を参照する。
ソースを読んだ時系列にメモしていくので、疑問点(?)などもそのままかいている。
以下の文は、CoreDataBooksを読もうとしている人以外には、情報がないと思う。
また、間違いもたくさんあると思う。鵜呑みにしないようにご注意を。

「今回の目的」
各ViewControllerの関係を理解する。


AddViewControllerは、DetailViewControllerを継承している。
また、AddViewControllerは、インスタンス変数にid を持っている。

これはどういうことか。

まず、上記delegateには、RootViewControllerがセットされる。
AddViewControllerでcancelまたはsave時に下記メソッド呼び出しを行う。
addViewController:didFinishWithSave:
これは、AddViewController.hで定義されたプロトコルの要請するメソッド。
このプロトコルに準拠するRootViewControllerは、ヘッダで、AddViewControllerDelegateに従うことを宣言し、メソッドを実装している。

RootViewControllerのメソッドaddViewController:didFinishWithSave:を見る。
ここでCore Data関連のやり取りがあり、コンテキストのsaveが行われる。

delegateにしている理由は、Core Data関連の処理を、RootViewControllerで行いたいから?
それぞれのビューで行うとしたら、関連インスタンス変数を持ち回らないといけない。

AddViewControllerとDetailViewControllerのUIの違いをそれぞれのviewDidLoadメソッドで吸収している。

EditingViewControllerではNSManagedObject *で情報を持ち、DetailViewControllerでは、Book *で情報を持つ。
BookはNSManagedObject を継承しているので、EditingViewControllerもBook *で情報を持てば良いのでは?

EditingViewControllerのNSManagedObjectをBookに変えてみる。
→問題なく動いた。Bookの方がsetValue:forKey:を使わなくても、直接プロパティを操作できてよいかも。

今回は以上

|

« iphone 開発 サンプル「CoreDataBooks」を読む。 1 | トップページ | iphone 開発 サンプル「CoreDataBooks」を読む。3 »

iphone開発」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1049865/35447585

この記事へのトラックバック一覧です: iphone 開発 サンプル「CoreDataBooks」を読む。2:

« iphone 開発 サンプル「CoreDataBooks」を読む。 1 | トップページ | iphone 開発 サンプル「CoreDataBooks」を読む。3 »