2016-11-12 63 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() 
} 

我正在使用configure函數來設置一個UITableViewCellCourse對象:

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從循環中刪除。您的模型類應該看起來更像是:包含在您的代碼段

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 
} 

的各種init方法都不似乎是必要的無論是。

相關問題