I have list of items in CloudKit. I'm getting the data just fine, but would like to sort the tableview
items by date.
Specifically, I would like to only show the items that's date are equal to or greater than today's date (now
).
TableViewController
:
override func viewDidLoad() {
super.viewDidLoad()
let now = NSDate()
let container = CKContainer.defaultContainer()
let publicData = container.publicCloudDatabase
let query = CKQuery(recordType: "Play", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil))
publicData.performQuery(query, inZoneWithID: nil) { results, error in
if error == nil { // There is no error
for play in results! {
let newPlay = Play()
newPlay.color = play["Color"] as! String
newPlay.datetime = playoffs["DateTime"] as! AnyObject
self.objects.append(newPlay)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}
}
else {
print(error)
}
}
}
Any help would be really appreciated, thanks!
EDIT
Added: let predicate = NSPredicate(format: "DateTime > %@", now)
Replaced: let query = CKQuery(recordType: "Play", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil))
with let query = CKQuery(recordType: "Play", predicate: predicate)
Does that make sense?
EDIT 2
This is what it looks like now:
let sort = NSSortDescriptor(key: "DateTime", ascending: true)
let query = CKQuery(recordType: "Play", predicate: predicate)
query.sortDescriptors = [sort]
publicData.performQuery(query, inZoneWithID: nil) { results, error in
Does that look right?