gpt4 book ai didi

ios - 通过 NSManagedObjectSubclass 上的 Swift 计算属性对 NSFetchedResultsController 进行排序

转载 作者:IT王子 更新时间:2023-10-29 05:52:05 24 4
gpt4 key购买 nike

我正在使用 Swift 和 Core Data 构建一个应用程序。在我的应用程序中的某个时刻,我想要一个 UITableView 显示当前在持久性存储中的所有类型的对象。目前,我正在检索它们并使用 NSFetchedResultsController 在 TableView 中显示它们。我希望 TableView 按我的 NSManagedObject 子类的计算属性排序,如下所示:

class MHClub: NSManagedObject{
@NSManaged var name: String
@NSManaged var shots: NSSet
var averageDistance: Int{
get{
if shots.count > 0{
var total = 0
for shot in shots{
total += (shot as! MHShot).distance.integerValue
}
return total / shots.count
}
else{
return 0
}
}
}

在我的 TableView Controller 中,我正在设置我的 NSFetchedResultsControllerfetchRequest 如下:

let request = NSFetchRequest(entityName: "MHClub")
request.sortDescriptors = [NSSortDescriptor(key: "averageDistance", ascending: true), NSSortDescriptor(key: "name", ascending: true)]

这样设置会导致我的应用程序崩溃,并在日志中显示以下消息:

'NSInvalidArgumentException', reason: 'keypath averageDistance not found in entity <NSSQLEntity MHClub id=1>'

当我取出第一个排序描述符时,我的应用程序运行得很好,但我的 TableView 并没有完全按照我想要的方式排序。如何根据 Swift 中 NSManagedObject 子类的计算属性对 TableView 进行排序?

最佳答案

正如 Martin 所指出的,您不能对计算属性进行排序。每次拍摄时只需更新俱乐部的新存储属性。

关于ios - 通过 NSManagedObjectSubclass 上的 Swift 计算属性对 NSFetchedResultsController 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com