我试着尽可能长时间关闭它,但我真的被困在这里。
基本上我的计划如下:
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的相册
我在这里错过了什么吗?
答案 0 :(得分:1)
甜蜜宝贝......
我曾经有过几个小时的最大浪费
在我设置artist
属性
albumInstance.artist = artistInstance
它设定了模型,一切似乎都很好......
但我没有打电话
albumInstance.save()
之后......
因此,在运行时,我可以看到albumInstance.artist
具有正确的文档ID,但没有save()
,反向关系不起作用。