簡體   English   中英

按日期從核心數據中對TableView進行排序-Swift4

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM