我'做一个简单的任务应用程序,当你添加一个新任务时,你必须填写名称和任务开始的日期。
我希望按照这样的部分按日期订购我的任务。
class Task: Object {
dynamic var name = "" // názov úlohy
dynamic var notes = "" // poznámky úlohy
dynamic var created_at = NSDate() // dátum vytvorenia úlohy
dynamic var planned_at = "" // dátum vykonania úlohy
dynamic var isCompleted = false // status úlohy
}
这是我保存数据的模型
来自浏览器
如何做到这一点?我在这里找到了一些问题,但没有任何帮助。
答案 0 :(得分:2)
<强> 1 强>
如果行数有点或固定,一种简单的方法是创建节管理对象(例如字典``)并自己填充值。
请参阅Realm的GroupedTableView示例https://github.com/realm/realm-cocoa/tree/master/examples/ios/swift-2.2/GroupedTableView
<强> 2 强>
如果有大量行或变量行,最有效的方法是定义节对象并与Task
对象链接。如下:
class DueDate: Object {
dynamic var date: String = "" // DD MM, YYYY
dynamic var task: Task?
override class func primaryKey() -> String {
return "date"
}
}
然后在创建Task
对象的每个DueDate
附加一个Task
对象。
let dateString = dateFormatter.stringFromDate(task.created_at)
var dueDate = realm.objectForPrimaryKey(DueDate.self, key: dateString)
if dueDate == nil {
dueDate = DueDate()
dueDate.date = dateString
try! realm.write {
realm.add(dueDate, update: true)
}
}
dueDate.tasks.append(task)
现在,您可以获得以下部分:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
let realm = try! Realm()
let sections = realm.objects(DueDate)
return sections.count
}
Realm的关系表示为本机链接。所以关系成本真的很便宜。这是你回答的问题吗?