db的领域部分日期?

时间:2016-06-01 09:13:27

标签: ios xcode swift tableview realm

我'做一个简单的任务应用程序,当你添加一个新任务时,你必须填写名称和任务开始的日期。

我希望按照这样的部分按日期订购我的任务。

enter image description here

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
}

这是我保存数据的模型

来自浏览器

enter image description here

如何做到这一点?我在这里找到了一些问题,但没有任何帮助。

1 个答案:

答案 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的关系表示为本机链接。所以关系成本真的很便宜。这是你回答的问题吗?