Swift 从CoreData标识对数组排序

Swift 从CoreData标识对数组排序,swift,core-data,Swift,Core Data,我正在尝试对数组进行排序。阵列内有naamdeelnemer,totaalpenten等。 当我打印支票时,数组返回[]。有人能帮我吗 import UIKit import CoreData var userArray:[Punten] = [] override func viewDidLoad() { super.viewDidLoad() userArray.sort { $0.naamdeelnemer! < $1.naamdeelnemer!}

我正在尝试对数组进行排序。阵列内有
naamdeelnemer
totaalpenten
等。 当我打印支票时,数组返回
[]
。有人能帮我吗

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)

    }
}
导入UIKit
导入CoreData
var userArray:[Punten]=[]
重写func viewDidLoad(){
super.viewDidLoad()
userArray.sort{$0.naamdeelnemer!<$1.naamdeelnemer!}
打印(用户数组)
tableView.delegate=self
tableView.dataSource=self
self.fetchData()
self.tableView.reloadData()
}
重写func numberOfSections(在tableView:UITableView中)->Int{
返回1
}
重写func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回userArray.count
}
重写func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
let cell=tableView.dequeueReusableCell(带有标识符:“cell”,用于:indexath)
让name=userArray[indexPath.row]
cell.textLabel!.text=name.naamdeelnemer!+“”+String(name.totaalpenten)
返回单元
}
func fetchData(){
让上下文=(UIApplication.shared.delegate为!AppDelegate)。persistentContainer.viewContext
做{
userArray=try context.fetch(Punten.fetchRequest())
}
抓住{
打印(错误)
}
}

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

self.fetchData()
userArray.sort { $0.naamdeelnemer! < $1.naamdeelnemer!}
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)

    }
}
func fetchData(){
让上下文=(UIApplication.shared.delegate为!AppDelegate)。persistentContainer.viewContext
let请求:NSFetchRequest=Punten.fetchRequest()
request.sortDescriptors=[NSSortDescriptor(键:“naamdeelnemer”,升序:true)]
做{
userArray=try context.fetch(请求)
}
抓住{
打印(错误)
}
}

userArray.sort{$0.naamdeelnemer!<$1.naamdeelnemer!}

从核心数据获取数据时,可以在请求中使用“NSSortDescriptor”。请在下面查找示例代码:

let request = NSFetchRequest<NSFetchRequestResult>(entityName: "TableName")
request.sortDescriptors = [NSSortDescriptor(key: "naamdeelnemer", ascending: true)]
let request=NSFetchRequest(entityName:“TableName”)
request.sortDescriptors=[NSSortDescriptor(键:“naamdeelnemer”,升序:true)]
这里,“TableName”是要获取记录的表的名称。 “naamdeelnemer”是可以进行排序的字段。
升序:参数可以是“true”或“false”

在获取内容之前进行排序。另外,你可以在你的请求中使用NSSortDescriptor。我明白了:模糊地使用'fetchRequest()'我的错,我给出了答案。