我正在尝试对数组进行排序。数组内部有naamdeelnemer
,totaalpunten
等。
当我打印检查时,数组返回[ ]
。谁可以帮助我?
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)
}
}
答案 0 :(得分:1)
您可以使用&#34; NSSortDescriptor&#34;在从Core Data获取数据时请求。请在下面找到示例代码:
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "TableName")
request.sortDescriptors = [NSSortDescriptor(key: "naamdeelnemer", ascending: true)]
这里,&#34; TableName&#34;是要获取记录的表的名称。 &#34; naamdeelnemer&#34;是可以进行排序的字段。 升序:参数可以是&#34; true&#34;或&#34; false&#34;
答案 1 :(得分:0)
您有第一个来获取数据然后对它们进行排序
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! < $1.naamdeelnemer!}
击>