ios – 在NSManagedObjectSubclass上通过Swift Computed Property对NSFetchedResultsController进行排序

ios – 在NSManagedObjectSubclass上通过Swift Computed Property对NSFetchedResultsController进行排序,第1张

概述我正在使用 Swift和Core Data构建一个应用程序.在我的应用程序的某一点上,我想让UITableView显示当前在持久存储中的所有类型的对象.目前,我正在检索它们并使用NSFetchedResultsController在表视图中显示它们.我希望表视图按我的NSManagedObject子类的计算属性排序,如下所示: class MHClub: NSManagedObject{@NSM 我正在使用 Swift和Core Data构建一个应用程序.在我的应用程序的某一点上,我想让UItableVIEw显示当前在持久存储中的所有类型的对象.目前,我正在检索它们并使用NSFetchedResultsController在表视图中显示它们.我希望表视图按我的NSManagedobject子类的计算属性排序,如下所示:
class MHClub: NSManagedobject{@NSManaged var name: String@NSManaged var shots: NSSetvar 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        }    }}

在我的表视图控制器中,我正在设置我的NSFetchedResultsController的fetchRequest,如下所示:

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>'

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

解决方法 正如Martin所指出的那样,你不能对计算属性进行排序.只需在每次拍摄时更新俱乐部的新存储属性. 总结

以上是内存溢出为你收集整理的ios – 在NSManagedObjectSubclass上通过Swift Computed Property对NSFetchedResultsController进行排序全部内容,希望文章能够帮你解决ios – 在NSManagedObjectSubclass上通过Swift Computed Property对NSFetchedResultsController进行排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1100651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存