2013年1月23日水曜日

CoreData データ取得の共通メソッドを作っておく

こんにちは!ひさしぶりの投稿です。

今回はCoreDataについて。
基本的な部分エンティティの設定やら何やらは本でも読んでもらうとして。
それらを実装済みの状態で簡単にCoreDataを扱うサンプルを書いて行きたいと思います。

DBっていえばCRUD(クラッド)できないとですね。ちなみにCRUDとは

 C=Create
   R=Read
   U=Update
   D=Delete

です。
え?そんなこと知ってるって?
そーですね。失礼しましたw


とりあえずはRDBでいうSelect投げられないとですね。
でもCreateしないとReadできないか。

そんなわけでまずはCreateから。


とりあえずの仕掛けとして、シングルトンでmanagerクラス作るのが常識かもしれませんが、簡単にAppDelegateにてcoreDateの設定周りを書ききりmanagedObjectContextとかもAppDelegateに保持する感じで説明します。

AppDelegate.h

@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;

ただし、ほかのCoreData周りのコードも含めて別途シングルトンの管理クラスを作ります。
ここではDataManagerとでもしておきましょか。

DataManager.m


+(NSManagedObjectContext *)managedObjectContext{
     AppDelegate *delegate=(AppDelegate*)[UIApplication     sharedApplication].delegate;
return delegate.managedObjectContext;
}

続いて呼び出し側

簡単に言うと、インスタンス作ってそいつのプロパティに値入れて保存。
ちなみにUpdateの場合もインスタンスを呼び出して保存でいけちゃいますw

YourClass.m
Order *orderEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Order" inManagedObjectContext:[DataManager managedObjectContext]];

    orderEntity.pos_order_id = order.orderId;
    orderEntity.amount = [NSNumber numberWithInt:order.orderAmount];
    orderEntity.created = order.orderDate;
    orderEntity.updated = order.orderDate;
    
        NSError *error = nil;
    [[DataManager managedObjectContext] save:&error];
    if (error) {
        //ここにエラー制御書きます
    }



はい、簡単ですね。
次回はReadについて書きたいと思います。


0 件のコメント:

コメントを投稿