迭代数组只获得Swift Playground中的第一个值

时间:2015-04-14 19:29:36

标签: arrays swift swift-playground

我知道这是一个非常基本的问题,但它让我难以理解并找出原因。我有一个名称数组以及迭代它们以将它们全部作为单个名称的内容,尽管当我使用for in循环时它只生成第一个名称,我的代码:

var arrayA = ["Mike", "James", "Stacey", "Steve"]
var str = String()
for array in arrayA {
    str = array 
    println(str)//Just prints steve
}

问题是它只打印史蒂夫,我希望能够访问所有名称单身

这就是我所看到的:

enter image description here

3 个答案:

答案 0 :(得分:7)

如果您正在使用游乐场,则可能需要更改视图才能查看所有结果。

您需要将鼠标悬停在快速查看显示屏上才能找到"所有值"图标。

enter image description here


Xcode 7 中可能已经发生了变化 - 正如@MikeMeyers在评论中提到的那样,您需要右键单击快速查看窗口并选择值历史记录选项。

enter image description here

答案 1 :(得分:0)

我无法重现您所说的内容:

rnapier:~$ swift
Welcome to Swift version 1.2. Type :help for assistance.
  1> var arrayA = ["Mike", "James", "Stacey", "Steve"]
  2. var str = String()
  3. for array in arrayA {
  4.     str = array
  5.     println(str)//Just prints steve
  6. }
Mike
James
Stacey
Steve
arrayA: [String] = 4 values {
  [0] = "Mike"
  [1] = "James"
  [2] = "Stacey"
  [3] = "Steve"
}
str: String = "Steve"

这将打印所有值,并将str分配给最后一个元素。目前还不清楚你为什么要使用str,但我相信它能满足你的要求。

如果我正在写这个循环,我会建议:

let arrayA = ["Mike", "James", "Stacey", "Steve"]
for elem in arrayA {
    println(elem)
}

答案 2 :(得分:0)

您的代码运行得很好 - 它遍历所有数组元素,并将它们全部打印出来。

我注意到了一些冗余 - 它可以更简洁地重写为:

var arrayA = ["Mike", "James", "Stacey", "Steve"]
for element in arrayA {
    println(element)//Just prints steve
}