我在NSManagedObject子类(对于Core Data)上使用计算属性来返回枚举值:
class Group: NSManagedObject {
enum SectionType {
case systems
case statuses
}
...
var section: SectionType {
get {
if (pages.count == 0) {
return .statuses
} else {
return .systems
}
}
}
}
在数据源的init方法中,我尝试过滤此计算属性,并收到错误"无法调用'过滤'使用参数列表类型((_) - > _)'":
class FilterDataSource {
init(results: [Group]) {
let unsortedSystems = results.filter { $0.section == .systems }
// "Cannot invoke 'filter' with an argument list of type ((_) -> _)'"
...
}
}
如果我尝试使用init之外的相同闭包进行过滤,则不会出现错误:
func funcOutsideOfInit() {
let testArr = [Group]()
// no error for this:
let unsortedSystems = testArr.filter { $0.section == .systems }
}
我试图过滤的对象数组是init的传递参数,所以在我看来,它与init中的任何事情无关。
我还尝试明确地将SectionType枚举符合Equatable,但仍然会收到错误。
为什么我只在init中使用带有此闭包的过滤器来获取此错误?