![](/img/trans.png)
[英]Swift 3. NSFetchedResultsController property in protocol
[英]Sorting NSFetchedResultsController by Swift Computed Property on NSManagedObjectSubclass
我正在使用Swift和Core Data构建应用程序。 在我的应用程序中的某一时刻,我希望有一个UITableView
显示持久存储中当前类型的所有对象。 目前,我正在检索它们,并使用NSFetchedResultsController
在表视图中显示它们。 我希望按我的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
}
}
}
在我的表视图控制器,我建立我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
子类的计算属性对表格视图进行排序?
正如马丁所指出的,您不能对计算属性进行排序。 每次拍摄时,只需更新俱乐部的新存储属性即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.