Mar*_*t77 3 arrays xcode nsarray swift2
Swift 2.0 - Xcode 7.2
我想创建一个这样的函数:
func returnExampleArray() -> Array {
return ["term1","term2"]
}
Run Code Online (Sandbox Code Playgroud)
在Swift 2.0中将函数返回为"Array"默认值,但Xcode 7.2只允许返回NSArray,如下所示:
func returnExampleArray() -> NSArray {
return ["term1","term2"]
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用Array代替NSArray?
Fogmeister的答案是正确的,但它并没有真正告诉你为什么.
该Array类型是一个泛型类型.你不能简单地返回一个,Array因为Swift需要知道你可以放在那个数组中.你应该写第一个函数:
func returnExampleArray() -> Array<String>
{
return ["term1","term2"]
}
Run Code Online (Sandbox Code Playgroud)
但是,当然有阵列的特殊符号.你可以把Array<T>T 放在某种类型的地方,你可以把[T]它换成原始版本的语法糖,这就是Fogmeister的答案来源.
NSArray是一个Objective-C类型,并不是通用的(但你几乎可以认为它是这样的Array<AnyObject>)这就是为什么你的第二个例子有效.然而,很多东西的推移,该阵列幕后["term1","term2"]必须被转换成NSArray的NSStrings的返回之前.
Array在Swift中返回一个正确的方法就是这样写它......
func returnExampleArray() -> [String] {
return ["term1","term2"]
}
Run Code Online (Sandbox Code Playgroud)
要么
func returnExampleArray() -> [TypeHere] {
return [.. objects of correct type here..]
}
Run Code Online (Sandbox Code Playgroud)
如果您在数组中使用其他对象类型.