2017-12-12 13 views
1

私はSaveDataToRealmクラスを持っています。このクラスでは、データを領域に格納しようとしています。しかし、私はそれを得ることができません。私がレルムオブジェクトを印刷した後に、それを書くことを試みた値なしでオブジェクトを表示しています。なぜ私はレルム内のデータを保存できません

class SaveDataToRealm: BaseViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     saveSessionData() 
    } 

    // MARK:- save session and Close session 
    func saveSessionData() { 
     let realm = try! Realm() 
     let localSession = TempRingSessionObject() 
     if isLiveSession{ 
      sessionId = RandomStringGenerator.sharedInstance.getUniqueSessionString() 
      localSession.sessionId = sessionId! 
     } else{ 
      localSession.class_id = courseSetupDetails["class_id"] as! String 
     } 
     try! realm.write { 
      realm.add(localSession) 
     } 
    } 

saveSessionData()機能を使用すると、レルムを初期化しています。 closeSelfSession()関数では、私はレルムにデータを格納しようとしています。

​​

私は間違っていますか? ありがとう!

答えて

0

フィルタリングに使用されているNSPredicateにはすべて欠陥があります。

正確なタイプによっては予期しない結果が生じる可能性があるので、変数を比較するのに、String(describing:)を使用しないでください。さらに、述部で単一引用符を使用する場合、変数の値ではなく、正確な結果を探すようにコンパイラーに指示します。 NSPredicateで作業する場合は、文字列補間("\(variable)")を使用しないでください。%@形式指定子を使用する必要があります。

let session = realm.objects(TempRingSessionObject.self).filter("sessionId contains '\(String(describing: self.sessionId))'").last 

が実際に

let session = realm.objects(TempRingSessionObject.self).filter("sessionId CONTAINS @%",self.sessionID).last 

この述語realm.objects(TempRingDataObject.self).filter("tag = '\(tagString)'")

realm.objects(TempRingDataObject.self).filter("tag = %@",tagString) 

そして、あなたの最後の述語でなければなりませんしなければならない、

realm.objects(TempRingSessionObject.self).filter("sessionId contains '\(self.courseSetupDetails["class_id"] as! String)'" 

012でなければなりません
realm.objects(TempRingSessionObject.self).filter("sessionId CONTAINS %@",self.courseSetupDetails["class_id"]) 
関連する問題