[問題] Core Data relation沒有作用

看板MacDev作者 (一片小蛋糕)時間8年前 (2016/10/04 03:52), 8年前編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
如題 我已經設定好relation 算是蠻簡單的練習而已 不過不知道為何我用sql看coredata的資料庫時,發現並沒有正確的幫我建立對應關係 例如 一個Album只能有一個singer 一個singer可以有很多個Album 然後我去建立資料 singer:A Album:01 singer:A Album:02 singer:A Album:03 這時去看sql資料應該要是 pk singer 1 A 2 A 3 A pk Album singer 1 01 1 2 02 1 3 03 1 但是我跑出來的都是 pk singer 1 A 2 A 3 A pk Album singer 1 01 1 2 02 2 3 03 3 雖然Album有建立與singer的relation,而且最後出來的singer都是A 但是總覺得哪裡怪怪的,跟期待的不一樣,原本期待singer(key)都只會是1而已 好像coredata並沒有幫我搜尋我建立的singer是不是重複的 沒有在建立關係時幫我統一對應到一個 這是本來受這樣嗎?還是我哪邊可能有出錯呢? coredata是用xcdatamodel建立的 我檢查singer跟album的relation有箭頭互相指 ---------------------- @interface Album (CoreDataProperties) @property (nullable, nonatomic, retain) NSString *album_name; @property (nullable, nonatomic, retain) Singer *singer; @end ----------------------- @interface Singer (CoreDataProperties) @property (nullable, nonatomic, retain) NSString *name; @property (nullable, nonatomic, retain) NSSet<Album *> *album; @end ----------------------- Singer *singer = [self.appDelegate creatSinger]; singer.name = self.singerField.text; Album *album = [self.appDelegate creatAlbum]; album.album_name = self.albumField.text; album.singer = singer; //建立album與singer關係 ----------------------- - (Singer *) creatSinger { NSManagedObjectContext *moc = [self managedObjectContext]; Singer *singer = [NSEntityDescription insertNewObjectForEntityForName:@"Singer" inManagedObjectContext:moc]; return singer; } - (Album *) creatAlbum { NSManagedObjectContext *moc = [self managedObjectContext]; Album *album = [NSEntityDescription insertNewObjectForEntityForName:@"Album" inManagedObjectContext:moc]; return album; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.241.102.252 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1475524374.A.46E.html ※ 編輯: wrt (123.241.102.252), 10/04/2016 04:08:32

10/04 20:18, , 1F
你這樣的寫法一定會一直產生新singer...
10/04 20:18, 1F

10/04 21:54, , 2F
我知道,只是對應到album的時候沒辦法都統一對應到同一個sin
10/04 21:54, 2F

10/04 21:54, , 3F
ger嗎
10/04 21:54, 3F

10/05 10:54, , 4F
先fetch看是否已有同名歌手 沒有才新增 再把歌手給album即
10/05 10:54, 4F

10/05 10:54, , 5F
10/05 10:54, 5F

10/05 11:25, , 6F
感謝大大回答,原來規則要另外建立,我以為coredata會自己規
10/05 11:25, 6F

10/05 11:25, , 7F
10/05 11:25, 7F
文章代碼(AID): #1NyhSMHk (MacDev)
文章代碼(AID): #1NyhSMHk (MacDev)