iOS-簡單使用core data

iOS-簡單使用core data

來自  Fgamers
681 次閱讀 評論 (0)

iPhone OS在2009年6月份推出3.0版本SDK,其中一個特性是引入了Mac SDK中的core data。是一種ORM(Object Relationships Mapping)解決方案,類似java的Hibernate。

有了這個,就不必像ios簡單sqlite使用那樣編寫繁瑣代碼了,減少工作量,也可以迴避使用c的語法,降低ios開發的技術門檻。總之,可降低開發成本,提高項目質量。
創建ios項目

爲了方便,直接用xcode工具嚮導創建項目,這樣可以自動集成core data的支持。

不一定創建window-based項目,split view-based也可以,用於ipad項目,或者對於iphone的navigation-based項目亦可。

創建實體

比如java裏的實例需要編寫java類和對應的mapping文件(也可能是註解)。在ios裏,需要兩步:

  • 圖形界面的設計工具,設計實體、實體屬性和實體的關係
  • 生成實體的類,也就是對應的.h和.m文件

創建的項目比如叫aaa,那麼找到aaa.xcdatamodel:

雙擊它,可調出模型編輯器。創建一個Person實體。

點擊上圖的加號創建一個新的實體(entity),然後在entity的文本框中填寫實體名稱。回車就可以看到下面類似uml類圖的圖形名稱變爲Person。

然後創建屬性:

點擊屬性部分的加號,選擇Add Attribute,增加一個id,數字的:

然後,設置爲自增列:

再設置個name屬性:

如果有多個實體,繼續創建,或者創建它們之間的關係。

然後,生成實體類,供編寫程序時調用。

創建新文件,注意要在實體編輯器界面,可以選中Person實體,這樣生成的文件名就是Person:

選擇 managed object class:

然後:

然後選中需要的實體,finish:

在項目中生成了實體類:

在代碼中使用實體

首先,需要在使用Person實例類的代碼頭文件中加入:

1
2
3
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "Person.h"

使用core data的簡單代碼,創建一個Person實體實例,保存它,然後遍歷數據,相當於:select * from persons:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    NSLog(@">>start app ");
    Person *person=(Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
    person.name=@"張三";
 
    NSError *error;
 
    if (![[self managedObjectContext] save:&error]) {
        NSLog(@"error!");
    }else {
        NSLog(@"save person ok.");
    }
 
    NSFetchRequest *request=[[NSFetchRequest alloc] init];
    NSEntityDescription *entity=[NSEntityDescription entityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
    [request setEntity:entity];
 
    NSArray *results=[[[self managedObjectContext] executeFetchRequest:request error:&error] copy];
 
    for (Person *p in results) {
        NSLog(@">> p.id: %i p.name: %@",p.id,p.name);
    }

如果需要刪除也很簡單:

[managedObjectContext deleteObject:person];

原文鏈接:http://marshal.easymorse.com/archives/3377

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章