2016-11-12 10 views
0

を戻ってきている私は、レルムを使用して保存したいCourseオブジェクトされていますレルムクエリはここで辞書の代わりに、オブジェクト

class Course: Object { 

    var name: String = "" 
    var code: String = "" 
    var CRN: Int = 0 
    var capacity: Int = 0 
    var occupied: Int = 0 

    required init() { 
     super.init() 
    } 

    required init(realm: RLMRealm, schema: RLMObjectSchema) { 
     super.init(realm: realm, schema: schema) 
    } 

    required init(value: Any, schema: RLMSchema) { 
     super.init(value: value, schema: schema) 
    } 

} 

は、ここで私はレルムにオブジェクトを書いています方法は次のとおりです。

DispatchQueue.main.async { 
     try! self.realm.write { 
     self.realm.add(course) 
    } 
} 

はここに方法です私はオブジェクトを読む:

for course in realm.objects(Course.self) { 
    self.courses.append(course) 
    self.tableView.reloadData() 
} 

私はを使用していますCourseオブジェクトにUITableViewCellを設定するには機能:

func configure(withCourse course: Course) { 

    self.codeLabel.text = course.name 
    self.nameLabel.text = course.code 
} 

はしかし、これは何もしません。

これは私がUITableViewCellを正しく設定するために取得するために使用するためにしなければならないものです:

self.codeLabel.text = course.value(forKeyPath: "name") as! String? 
self.nameLabel.text = course.value(forKeyPath: "code") as! String? 

私が辞書に値そのプロパティにアクセスしておらず、どのように?

答えて

3

モデルクラスのプロパティにdynamic修飾子がありません。この修飾子は、Realmにプロパティへのアクセスを傍受する機会があることを保証するために必要で、Realmにディスク上のファイルからデータを読み書きする機会を与えます。これらのプロパティを省略すると、Swiftコンパイラはインスタンス変数に直接アクセスし、Realmをループから切り離します。あなたのモデルクラスは、より多くのようになります。様々なinit方法の

class Course: Object { 
    dynamic var name: String = "" 
    dynamic var code: String = "" 
    dynamic var CRN: Int = 0 
    dynamic var capacity: Int = 0 
    dynamic var occupied: Int = 0 
} 

なしあなたのコードスニペットに含まれていないのいずれかに必要であると思われます。

関連する問題