Swift就像带有下标的数组类行为一样

时间:2014-10-24 15:31:33

标签: ios arrays swift subscript

我确实实现了使用下标并返回如下对象的类:

class PlacesSet {
  ...
  subscript(i: Int) -> Place {
      get {
          return stored[i];
      }
      set {
          stored[i] = newValue;
      }
  }
}

但是当我尝试在某个cocoa函数中将它作为数组传递时,它会返回错误。 我应该实现一些协议和缺少方法吗?一般来说可以做到吗?

1 个答案:

答案 0 :(得分:0)

实现下标并不会奇怪地将类或结构转换为数组,因此您无法传递PlaceSet的实例,其中需要快速数组或NSArray

您可以在类中实现一个返回NSArray

的方法
func toArray() -> NSArray {
    ...
}

或您喜欢的财产:

var asArray: NSArray { return ... }

如果你真的希望你的课程表现得像NSArray,那么让PlaceSet成为它的一个子类 - 但这是我不推荐的。同样的不能用快速数组完成,因为它是一个结构,因此它不支持继承。