通过NSManagedObjectSubclass上的Swift Computed属性对NSFetchedResultsController进行sorting
我正在使用Swift和Core Data构build一个应用程序。 在我的应用程序的一个点上,我想有一个UITableView
显示当前在持久存储中的types的所有对象。 目前,我正在检索它们并使用NSFetchedResultsController
在表格视图中显示它们。 我希望表视图按我的NSManagedObject
子类的计算属性sorting,如下所示:
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 } } }
在我的表视图控制器,我设置我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>'
当我拿出第一个sorting描述符时,我的应用程序运行得很好,但是我的表视图没有按照我想要的顺序sorting。 我怎么能sorting我的表视图基于Swift中NSManagedObject
子类的计算属性?
正如马丁所指出的那样,你无法对计算出的属性进行sorting。 每次拍摄时只需更新俱乐部的新存储属性。
- UICollectionView – iOS 10 – iPhone 6 Plus模拟器崩溃,但适用于真实设备
- 为什么instantiateViewContoller是必要的?
- swift removedPercentEncoding不适用于gb2312string
- 如何将带有标记的CURL命令转换成Swift?
- 如何基于另一个数组的位置对数组进行sorting?
- 在SpriteKit中预加载纹理
- CoreLocation线程崩溃崩溃:com.apple.CoreLocation.ConnectionClient.0x16fcb870.events
- Swift:将一个xib添加到UIView中
- 在单独的View Controller上使用scrollViewDidScroll时,无法更改UINavigationBar的样式