我确实实现了使用下标并返回如下对象的类:
class PlacesSet {
...
subscript(i: Int) -> Place {
get {
return stored[i];
}
set {
stored[i] = newValue;
}
}
}
但是当我尝试在某个cocoa函数中将它作为数组传递时,它会返回错误。 我应该实现一些协议和缺少方法吗?一般来说可以做到吗?
答案 0 :(得分:0)
实现下标并不会奇怪地将类或结构转换为数组,因此您无法传递PlaceSet
的实例,其中需要快速数组或NSArray
。
您可以在类中实现一个返回NSArray
:
func toArray() -> NSArray {
...
}
或您喜欢的财产:
var asArray: NSArray { return ... }
如果你真的希望你的课程表现得像NSArray
,那么让PlaceSet
成为它的一个子类 - 但这是我不推荐的。同样的不能用快速数组完成,因为它是一个结构,因此它不支持继承。