繁体   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