[英]Sort TableView by Date from core Data - Swift4
我正在嘗試按日期對UITableView進行排序,這是來自核心數據。
從核心數據獲取數據
func getData() {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
tasks = try context.fetch(Task.fetchRequest())
}
catch{
print("Fetching Failed")
}
}
提供數據
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCell") as! CustomTableViewCell
let task = tasks[indexPath.row]
let dateRangeStart = Date()
let dateRangeEnd = task.Datum
let components = Calendar.current.dateComponents([.year, .weekOfYear, .month, .day], from: dateRangeStart, to: dateRangeEnd!)
cell.name.text = task.name
cell.dayLeft.text = "\(components.month ?? 0)M \(components.weekOfYear ?? 0)W \(components.day ?? 0)D"
return cell
}
我嘗試了在stackoverflow上發現的東西
meetingsData.sort({ $0.meetingDate.compare($1.meetingDate) == .OrderedAscending })
但是我沒有讓它工作。.我是Swift / Programming的新手,所以如果有人可以在我這里幫助我。 我認為這是我“陣列設計”的原因
您可以獲取數據並對結果數組進行排序。 但是由於您使用的是Core Data,因此您可以只告訴Core Data首先給您排序數組。 在提取請求上使用排序描述符。 對於屬性aDatum
,您將使用類似
let sortDescriptor = NSSortDescriptor(key: "aDatum", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
然后,當您執行提取操作時,結果數組將已經按aDatum
排序。
您可以這樣操作:
let sortedMeetingData = meetingData.sorted{ $0.meetingDate < $1.meetingDate }
感謝Moe的快速解答。 那是我現在的解決方案。
let sortedData = tasks.sorted{ $0.aDatum! < $1.aDatum! }
let sort = sortedData[indexPath.row]
現在,該數組按日期排序-發出數據:
cell.name.text = sort.name
cell.lable.text = sort.lable
....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.