CouchbaseLite反向关系不起作用

时间:2017-08-25 03:30:19

标签: couchbase couchbase-lite

我试着尽可能长时间关闭它,但我真的被困在这里。

我试图利用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 个答案:

答案 0 :(得分:1)

甜蜜宝贝......

我曾经有过几个小时的最大浪费

在我设置artist属性

的代码中

albumInstance.artist = artistInstance

它设定了模型,一切似乎都很好......

但我没有打电话 albumInstance.save()之后......

因此,在运行时,我可以看到albumInstance.artist具有正确的文档ID,但没有save(),反向关系不起作用。

是的......这样做可以解决所有问题...