现在我使用这个func来获取我的UITableView
并且它工作正常,但我希望按"dataUltimei"
排序,这是一个日期(例如:07.08.2017)。我不知道为什么,但它并没有排序。这是我的代码:
func fetch() {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedObjectContext = appDelegate.persistentContainer.viewContext
let sortDescriptor = NSSortDescriptor(key: "dataUltimei", ascending: true)
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName:"Contact")
fetchRequest.sortDescriptors = [sortDescriptor]
do {
contacts = try managedObjectContext.fetch(fetchRequest) as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch. \(error)")
}
}
答案 0 :(得分:0)
由于您将日期存储为字符串,因此您无法将Core Data排序为作为日期。 Core Data不知道你的字符串是一个日期,所以它使用字符串规则而不是数字日期比较对它进行排序,这就是你所看到的。
如果您需要按日期排序,您需要有一个日期。将日期保存在Core Data中作为日期字段并对该值进行排序。然后使用DateFormatter
将日期转换为UI的字符串。
如果您将日期字符串格式化为年 - 月 - 日,则排序可能会有效,例如2017-08-22
。但是比较这样的字符串比比较日期慢得多。它可能会给出正确的排序结果,但只会带来更差的性能。
答案 1 :(得分:-1)
我发现我的func对表格进行了排序,但不是按照我想要的方式排序。 &#34; dataUltimei&#34;将日期表示为字符串(June,12,2017),并按字母顺序对其进行排序。现在我试图将我的日期类型(6月12,2017)转换成这样的东西(06.12.2017),也许它会起作用