看板 MacDev 關於我們 聯絡資訊
如題 我已經設定好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
sdyy: 你這樣的寫法一定會一直產生新singer... 10/04 20:18
wrt: 我知道,只是對應到album的時候沒辦法都統一對應到同一個sin 10/04 21:54
wrt: ger嗎 10/04 21:54
sdyy: 先fetch看是否已有同名歌手 沒有才新增 再把歌手給album即 10/05 10:54
sdyy: 可 10/05 10:54
wrt: 感謝大大回答,原來規則要另外建立,我以為coredata會自己規 10/05 11:25
wrt: 劃 10/05 11:25