最近在使用MagicalRecord做數(shù)據(jù)持久層CoreData的操作庫(kù)指黎,今天做了一個(gè)多表關(guān)聯(lián)數(shù)據(jù)的操作朱灿,整理了一個(gè)demo换可,特此記錄一下竹伸。
關(guān)于如何使用Cocopads 和 MagicalRecord 庫(kù)的引入就不做說(shuō)明了洽洁。
1饲做、首先創(chuàng)建一個(gè)數(shù)據(jù)Model逼纸,-file->new->CoreData ->選擇data model嗅蔬,取名DemolModel
2、分別創(chuàng)建兩個(gè)實(shí)體菇用,UserEntity和MessageEntity
這里的兩個(gè)表分別代表用戶表和用戶接受的消息列表澜驮,它們是一對(duì)多的關(guān)系,意思是一個(gè)用戶會(huì)擁有很多條消息刨疼。下面設(shè)置他它們關(guān)系。
3鹅龄、設(shè)置RelationHips
設(shè)置UserEntity對(duì)MessageEntity的關(guān)系是一對(duì)多揩慕,to many,如下圖扮休。新建時(shí)候迎卤,relationship可以隨意取名,一般會(huì)取它要關(guān)聯(lián)那個(gè)實(shí)體的名字(即Message)玷坠,Destination:是選擇需要關(guān)聯(lián)的實(shí)體蜗搔,Inverse:是選擇在關(guān)聯(lián)表里面建好的relationship。這是UserEntity的設(shè)置八堡。
下面設(shè)置MessageEntity樟凄,它對(duì)于UserEntity是多對(duì)一的關(guān)系,設(shè)置如下
設(shè)置完實(shí)體之間的關(guān)系后兄渺,就可以生成它們對(duì)應(yīng)的Model文件了缝龄。選擇:Editor->Create NSManagedObject ?Subclass..,然后全選,下一步到完成即可叔壤。
自動(dòng)生成的Model文件:
4瞎饲、上面工作完成后,可以開(kāi)始寫程序了炼绘,
a嗅战、引入MagicalRecord庫(kù),配置基本設(shè)置
#import <MagicalRecord/MagicalRecord.h>
在AppDelegate的application didFinishLaunchingWithOptions設(shè)置CoreData本地?cái)?shù)據(jù)庫(kù)
[MagicalRecord setupCoreDataStackWithStoreNamed:@"MyDatabase.sqlite"];
在程序退出的時(shí)候設(shè)置:
- (void)applicationWillTerminate:(UIApplication *)application {
[MagicalRecord cleanUp];
}
b俺亮、添加數(shù)據(jù)到數(shù)據(jù)庫(kù)
c驮捍、查詢數(shù)據(jù)
d、輸出結(jié)果
MagicalRecordDemo[1116:31713] 用戶數(shù): 1
?MagicalRecordDemo[1116:31713] demowork
MagicalRecordDemo[1116:31713] Hello
MagicalRecordDemo[1116:31713] Bye Bye