【问题标题】:CouchbaseLite Inverse Relationship not workingCouchbaseLite 反向关系不起作用
【发布时间】:2017-08-25 03:30:18
【问题描述】:

我试着尽可能拖延这个时间,但我真的被困在这里了。

我正在尝试使用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 的相册

我错过了什么吗?

【问题讨论】:

    标签: couchbase couchbase-lite


    【解决方案1】:

    亲爱的宝贝...

    一段时间以来我最大的浪费时间

    在我设置 artist 属性的代码中

    albumInstance.artist = artistInstance

    它设置了模型,一切看起来都很好......

    但我没有打电话 albumInstance.save() 紧随其后...

    所以在运行时,我可以看到 albumInstance.artist 具有正确的文档 ID,但没有 save(),反向关系将无法工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 2017-10-15
      相关资源
      最近更新 更多