Swift - 任意数组字符串的数组

And*_*ino 7 arrays casting ios swift

如何将最初声明为Any对象的容器的数组转换为字符串数组(或任何其他对象)?示例:

var array: [Any] = []
.
.
.
array = strings // strings is an array of Strings
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:"无法指定字符串类型的值以键入任何"

我能怎么做?

aya*_*aio 8

您不能安全地映射改变一个变量的类型,一旦被宣布,所以你必须创建一个又一个,例如Any项目StringflatMap:

var oldArray: [Any] = []
var newArray: [String] = oldArray.flatMap { String($0) }
Run Code Online (Sandbox Code Playgroud)


小智 5

更新到 Swift 5

var arrayOfAny: [Any] = []
var arrayOfStrings: [String] = arrayOfAny.compactMap { String(describing: $0) }
Run Code Online (Sandbox Code Playgroud)