从CoreData Identity中排序数组

时间:2018-02-27 13:03:40

标签: swift core-data

我正在尝试对数组进行排序。数组内部有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)

    }
}

2 个答案:

答案 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!}