【问题标题】:Sort array from CoreData Identity从 CoreData Identity 排序数组
【发布时间】:2018-02-27 13:03:40
【问题描述】:

我正在尝试对数组进行排序。数组内部是naamdeelnemertotaalpunten 等。 当我打印支票时,数组返回[ ]。谁能帮帮我?

import UIKit
import CoreData



var userArray:[Punten] = []

override func viewDidLoad() {

    super.viewDidLoad()

    userArray.sort { $0.naamdeelnemer! < $1.naamdeelnemer!}
    print(userArray)

    tableView.delegate = self
    tableView.dataSource = self

    self.fetchData()
    self.tableView.reloadData()
}

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return userArray.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    let name = userArray[indexPath.row]

    cell.textLabel!.text = name.naamdeelnemer! + "    " + String(name.totaalpunten)


    return cell
}

func fetchData() {

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    do {
        userArray = try context.fetch(Punten.fetchRequest())
    }
    catch {
        print(error)

    }
}

【问题讨论】:

  • 您在获取内容之前进行排序。此外,您可以在请求中使用 NSSortDescriptor。

标签: swift core-data


【解决方案1】:

您可以在从 Core Data 获取数据时对请求使用“NSSortDescriptor”。请在下面找到示例代码:

let request = NSFetchRequest<NSFetchRequestResult>(entityName: "TableName")
request.sortDescriptors = [NSSortDescriptor(key: "naamdeelnemer", ascending: true)]

这里,“TableName”是要获取记录的表的名称。 “naamdeelnemer”是可以进行排序的字段。 升序:参数可以是“真”或“假”

【讨论】:

    【解决方案2】:

    您必须首先获取数据然后对其进行排序

    self.fetchData()
    userArray.sort { $0.naamdeelnemer! < $1.naamdeelnemer!}
    

    然而这不像CoreData。获取传递排序描述符的数据。这样效率更高

    func fetchData() {
    
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        let request : NSFetchRequest<Punten> = Punten.fetchRequest()
        request.sortDescriptors = [NSSortDescriptor(key: "naamdeelnemer", ascending: true)]
    
        do {
            userArray = try context.fetch(request)
        }
        catch {
            print(error)
    
        }
    }
    

    userArray.sort { $0.naamdeelnemer! &lt; $1.naamdeelnemer!}

    【讨论】:

    • 我明白了:'fetchRequest()' 的模糊使用
    • 我的错,我没有回答这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多