如何在swift中显示数组的所有元素?

use*_*848 34 xcode ios swift

我有这样一个数组: var array = ["Chinese", "Italian", "Japanese", "French", "American"]

我想在一个新行上打印出所有单独的元素.

我怎样才能做到这一点?

Vik*_*son 84

我个人最喜欢的调试用途是dump(),它还会打印元素所具有的索引.如果阵列中也有数组也很完美.

var array = ["Chinese", "Italian", "Japanese", "French", "American"]
dump(array)
Run Code Online (Sandbox Code Playgroud)

这将生成以下输出

? 5 elements
  - [0]: Chinese
  - [1]: Italian
  - [2]: Japanese
  - [3]: French
  - [4]: American
Run Code Online (Sandbox Code Playgroud)

  • 这应该是选定的答案 (16认同)
  • imho dump在UI测试中非常有用,可以轻松查看子按钮列表,例如... (2认同)

Bas*_*Bas 38

您可以像这样遍历数组并在新行上打印出所有元素:

for element in array {
  println(element)
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

对于Swift 2和Swift 3:

for element in array {
  print(element)
}
Run Code Online (Sandbox Code Playgroud)

或者如果你想要它在同一条线上:

for element in array {
  print(element, terminator: " ")
}
Run Code Online (Sandbox Code Playgroud)


Fir*_*iro 21

更新:

从iOS 9开始,您现在可以使用 dump

var someArray = ["one", "two", "three"]
dump(someArray)
Run Code Online (Sandbox Code Playgroud)

原版的:

这是打印数组的好方法:

var someArray = ["one", "two", "three"]

// prints out the elements separated by a line break
// same as calling "println" on each item in the array:
println(someArray.joinWithSeparator("\n"))

// one
// two
// three
Run Code Online (Sandbox Code Playgroud)

否则,如果你想要它们在同一行,你只需打印数组:

// prints on the same line:
// ["one", "two", "three"]
println(someArray)
Run Code Online (Sandbox Code Playgroud)


PDK*_*PDK 5

注意如果您不喜欢格式化dump(…),那么您可以从其签名中看到它有一些默认参数,因此可以进行一些自定义.

话虽如此,还有两个可供考虑的替代方案可以提供更大的灵活性 - 让您决定是否以牺牲可读性为代价!

首先,如果你喜欢闭包参数表示法,例如简写参数名称,和/或你想在打印它之前先操作你的数组,你可以使用forEach:

array.forEach() { print($0) }
Chinese
Italian
Japanese
French
American

array.sorted(by: {$1 > $0}).forEach() { print($0) }
American
Chinese
French
Italian
Japanese
Run Code Online (Sandbox Code Playgroud)

其次,如果你想要一个索引,但dump(…)有点过于冗长,请尝试:

for (n, nationality) in array.enumerated() { print("\(n) \(nationality)") }
0 Chinese
1 Italian
2 Japanese
3 French
4 America
Run Code Online (Sandbox Code Playgroud)