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()'我的错,我给出了答案。