2017-08-25 78 views
1

我試圖把它關閉儘可能長,但我真的被困在這裏。CouchbaseLite逆向關係不起作用

我試圖利用Inverse Relationships

基本上我的計劃是這樣的:

class Album 
var artist: artist? 

class Artist 
@NSManaged var albums:NSArray? 
class func albumsInverseRelation() -> String { return "artist" } 
class func albumsItemClass() -> AnyClass { return Album.self } 

再後來我嘗試訪問的計算性能,albums

bgdb.modelFactory?.registerClass("Album", forDocumentType: "Album") 
bgdb.modelFactory?.registerClass("Artist", forDocumentType: "Artist") 

if let artistID = artist?.document?.documentID, let fetchedArtist = try! Artist.fetchOne(field: "_id", operand: .Matches, value: artistID as AnyObject, database: bgdb) { 
    print(fetchedArtist.albums as! [Album]) 
} 

fetchedArtist.albums回報一個空陣列!

這就是爲什麼我很困惑,從調試:

(lldb) po album?.artist?.document?.documentID 
▿ Optional<String> 
    - some : "-obO5dJTBF-xu4lzbWTM9yU" 


(lldb) po fetchedArtist.document?.documentID 
▿ Optional<String> 
- some : "-obO5dJTBF-xu4lzbWTM9yU" 

由於它的出現,有一個相冊有一個藝術家ID ,我也可以匹配藝術家ID與現有的藝術家

然而,當我問artist實例是albums,它未能恢復具有相同artist ID

我在這裏失去了一些東西的專輯?

回答

1

甜寶貝...

最大的幾個小時,我已經在一段時間

在我的代碼

我在那裏設置artist財產浪費

albumInstance.artist = artistInstance

它設置模型,一切都顯得很好...

但我沒有打電話 albumInstance.save()之後...

所以在運行時,我可以看到albumInstance.artist有正確的文件ID,但沒有save(),反相關不能工作。

是啊......這樣做可以解決所有問題...