iOS:Core Data 中的簡單ORM

來源:互聯網
上載者:User

前2天在微博看到劉鑫等人對Android和iOS上資料庫儲存的ORM(對象關係映射,即把資料庫映射到對象)的討論。自己項目中需要儲存的資料大多比較簡單,所以無論是Android還是iOS都沒有使用ORM的相關東西。其實Core Data的一大特性就是對ORM的處理。

我們首先在xcdatamodel檔案中設計我們的資料庫:例如我建立一個Data的實體,裡面有一個String類型的屬性name以及一個Integer類型的num:

 

然後選中Data,添加檔案,選擇NSManagedObject subclass類型:

xcode就會自動幫我們的資料庫自動對應出對象了,產生Data.h  Data.m檔案,Data為 NSManagedObject派生的子類,

#import <Foundation/Foundation.h>#import <CoreData/CoreData.h>@interface Data : NSManagedObject@property (nonatomic, retain) NSString * name;@property (nonatomic, retain) NSNumber * num;@end
#import "Data.h"@implementation Data@dynamic name;@dynamic num;@end

我們在需要用到儲存CoreData的地方,直接使用Data對象就行,當然,你需要import Data.h 先,例如我demo的代碼:

-(void) saveDataWithName:(NSString *) Name andNum:(int ) Num{    AppDelegate *appDelegate=[[UIApplication sharedApplication] delegate];    NSManagedObjectContext *context = appDelegate.managedObjectContext;    //save Data    Data *data = [NSEntityDescription insertNewObjectForEntityForName:@"Data" inManagedObjectContext:context];    data.name = Name;    data.num = [NSNumber numberWithInt:Num];    [appDelegate saveContext];            //get Data     NSError *error;    NSFetchRequest *request=[[NSFetchRequest alloc] init];    NSEntityDescription *entity=[NSEntityDescription entityForName:@"Data" inManagedObjectContext:context];    [request setEntity:entity];        NSArray *results=[[context executeFetchRequest:request error:&error] copy];        for (Data *d in results) {        NSLog(@">> date.name: %@ data.num: %i",d.name,[d.num intValue]);    }}

 

其實之前的做法(iphone開發中的資料存放區:Core Data)是直接使用NSManagedObject對象去存取,現在則把它映射到對應對象裡面,當然在資料庫複雜的時候,其好處會體現出來。

簡單的ORM in iOS就是這些。

 

參照:http://marshal.easymorse.com/archives/3377

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.