CouchbaseLite反向关系不起作用
我试着把这件事拖得越久越好,但我真的被困在这里了 我正试图利用 基本上我的方案是这样的:CouchbaseLite反向关系不起作用,couchbase,couchbase-lite,Couchbase,Couchbase Lite,我试着把这件事拖得越久越好,但我真的被困在这里了 我正试图利用 基本上我的方案是这样的: class Album var artist: artist? class Artist @NSManaged var albums:NSArray? class func albumsInverseRelation() -> String { return "artist" } class func albumsItemClass() -> AnyClass { return Album.s
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"
(lldb)po相册?.artist?.document?.documentID
▿ 可选的
-一些:“-obO5dJTBF-xu4lzbWTM9yU”
(lldb)采购订单获取Artist.document?documentID
▿ 可选的
-一些:“-obO5dJTBF-xu4lzbWTM9yU”
正如它所显示的,有一个具有艺术家ID的相册
我还可以将该艺术家ID与现有艺术家匹配
但是,当我向艺术家
实例询问它的相册
时,它无法返回具有相同艺术家
ID的相册
我错过了什么吗?亲爱的宝贝
这是我一段时间以来最大的浪费
在我的代码中,我正在设置artist
属性
albumInstance.artist=artistInstance
它设定了模型,一切看起来都很好
但我没打电话
albumInstance.save()
在
因此在运行时,我可以看到albumInstance.artist
具有正确的文档ID,但如果没有save()
,则反向关系无法工作
嗯。。。这样做可以修复一切