2017-08-25 1 views
1

私はできる限りこのことをやってみましたが、私は本当にここにこだわっています。CouchbaseLite逆の関係は動作しません

私はInverse Relationships

を利用しようとしている基本的に私のスキームは以下のようになります後、私は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戻り、計算されたプロパティにアクセスしようと次に

class Album 
var artist: artist? 

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

空の配列!

私はデバッグから、混乱している理由です:

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


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

それが表示されます、そこにアルバムアーティストID を有することであると私はまた、既存のアーティスト

とそのアーティストのIDを一致させることができますそれは albumsをだために、私は artistインスタンスを頼むとき

はまだ、それが

が、私はここで何かが欠けアム同じartist IDを持っているアルバムを返すことに失敗しましたか?

答えて

1

甘い赤ちゃん...私はしばらくの間、私はそれが

albumInstance.artist = artistInstance

artistプロパティを設定して自分のコードで

に持っていた数時間の

最大の廃棄物モデルを設定して、すべてがうまくいくように見えました...

しかし私は電話していませんでした albumInstance.save()直後...

したがって、albumInstance.artistは正しいドキュメントIDを持っていますが、save()がないと、逆の関係は機能しません。

ええと...そのすべてを修正しました...

関連する問題