Ios 带下标的类Swift数组类行为
我实现了使用下标和返回对象的类,如下所示:Ios 带下标的类Swift数组类行为,ios,arrays,swift,subscript,Ios,Arrays,Swift,Subscript,我实现了使用下标和返回对象的类,如下所示: class PlacesSet { ... subscript(i: Int) -> Place { get { return stored[i]; } set { stored[i] = newValue; } } } 但当我尝试在某个cocoa函数中将其作为数组传递时,它返回错误。 我应该实现一些协议和缺少的方法吗?一般来说,有可能这样做吗?
class PlacesSet {
...
subscript(i: Int) -> Place {
get {
return stored[i];
}
set {
stored[i] = newValue;
}
}
}
但当我尝试在某个cocoa函数中将其作为数组传递时,它返回错误。
我应该实现一些协议和缺少的方法吗?一般来说,有可能这样做吗?实现一个下标并不会神奇地将一个类或结构转化为一个数组,因此您不能传递一个需要swift数组或
NSArray
的PlaceSet
实例
您可以在类中实现一个方法,该方法返回NSArray
:
func toArray() -> NSArray {
...
}
或者,如果您愿意,可以选择一处房产:
var asArray: NSArray { return ... }
如果你真的想让你的类表现得像一个
NSArray
,那么就把PlaceSet
作为它的一个子类——但我不推荐这样做。swift数组也不能这样做,因为它是一个结构,因此不支持继承。哪个错误?运行时还是编译?发布一个失败的代码示例,它说PlacesSet不是NSArray的类型,如果我添加:NSArray,我将得到“使用不兼容类型(Int)->Place重写索引下标”,它可能会工作,但是,当我向协议NSArray添加confirm类时,以及是否仍然存在实现asArray错误“使用不兼容的类型(Int)->Place覆盖索引下标”,因此我目前无法使用带下标的数组,但需要这两种行为。很抱歉,不清楚您的意思-请将错误发生的代码张贴在哪里,否则,如果我这样做,就无法找出代码中的错误:“mapKitView.addAnnotations”(navigation.places)“错误是它不是NSArray的子类型,即使使用asArray变量,但如果我将:NSArray添加到类中。错误是在下标行上“使用不兼容的类型(Int)->Place覆盖索引下标”,这没有多大帮助,因为我不知道navigation.places是什么