顯示具有 core data 標籤的文章。 顯示所有文章
顯示具有 core data 標籤的文章。 顯示所有文章

2011年3月21日 星期一

core data model的讀寫

1. 新增一行資料至table
ex:
假設model的類別為Person

Person *person = [NSEntityDescription    
   insertNewObjectForEntityForName:@"Person" 
   inManagedObjectContext:self.managedObjectContext];
if(person != nil)
{
        person.age = [NSNumber numberWithInt:1];
        person.name = @"peter";
        
        NSError *saveError = nil;
        if([self.managedObjectContext save:&saveError] == YES)
        {
            NSLog(@"save new rocord successfully");
        }
}
說明:
利用insertNewObjectForEntityForName:inManagedObjectContext: method新增資料。不過這只是暫時的,若要真的將資料存入database,需呼叫NSManagedObjectContext物件的save: method


2. 從table讀取資料
ex:
假設model的類別為Person
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc
    init];

NSEntityDescription *entity = [NSEntityDescription  
    entityForName:@"Person" 
    inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSError *error = nil;
NSArray *personArray = [self.managedObjectContext 
    executeFetchRequest:fetchRequest error:&error];
for(Person *person in personArray)
{
   NSLog(@"name %@", person.name);
}
說明:
(1)利用NSFetchRequest物件設定尋找的條件
(2)運用NSManagedObjectContext物件的executeFetchRequest:error: 
   method尋找符合條件的資料。





建立core data model

1. 點選 .xcdatamodel檔案,顯示core data model編輯視窗


2.  點選Add Entity建立table Person



3. 針對table Person,設定它的column( attribute)


    以下為column所能設定的型別


   切換至Style模式,表格變成圖形化表示。

 

                


4. 產生core data model對應的class檔
    (1) New File ->  Core Data -> NSManagedObject subclass 

     (2) 選擇欲產生class的data model


    (3) 產生class檔 ( Person.h & Person.m)




2011年3月20日 星期日

建立support core data的iOS App專案

在建立project時,事先打開core data功能。
ex:
New Project -> Window-based Application
    勾選use core data



使用core data的project,會在app的delegate class裡,加入以下3個core data相關的property。
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;

@property (nonatomic, retain, readonly
NSPersistentStoreCoordinator *persistentStoreCoordinator;

managed Object Context: 我們經由它來修改database裡的資料。

managed Object Model: 定義database的schema。

persistent Store Coordinator: 連接底層的資料庫和App

managed Object: 對應到表格裡的某一行