"无法调用'过滤'参数列表类型为((_) - > _)"仅在init中

时间:2015-09-08 13:46:54

标签: ios swift

我在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中使用带有此闭包的过滤器来获取此错误?

0 个答案:

没有答案