遍历数组只获得 Swift Playground 中的第一个值

Posted

技术标签:

【中文标题】遍历数组只获得 Swift Playground 中的第一个值【英文标题】:Iterating through an array only gets the first value in Swift Playground 【发布时间】:2015-04-14 19:29:35 【问题描述】:

我知道这是一个非常基本的问题,但它让我很难理解为什么。我有一个名称数组以及如何遍历它们以将它们全部作为单个名称,尽管当我使用 for in 循环这样做时,它只会产生名字,我的代码:

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

问题是它只打印 steve,我希望能够单独访问所有名称

这就是我所看到的:

【问题讨论】:

只打印“Steve”?这是在游乐场吗?如果是这样,并且您正在通过 QuickLook 查看输出,则必须单击结果视图中的“所有值”按钮。 【参考方案1】:

如果您使用的是 Playground,则可能需要更改视图才能看到所有结果。

您需要将鼠标悬停在快速视图显示上才能找到“所有值”图标。


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

【讨论】:

如果您将鼠标悬停在快速视图显示上,您是否没有看到右上角出现两个图标? 这似乎可能会随着 Xcode 7 的变化而改变。我没有看到这两个图标,而是(在一些 UI 故障中)我需要右键单击快速查看显示窗口并然后从弹出菜单中选择。【参考方案2】:

我无法重现你所说的:

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)

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于遍历数组只获得 Swift Playground 中的第一个值的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift/Playground 中使用 .append 选项到数组结束时出现错误

Swift Playground 中的二维数组

Swift Playground 显示错误的语句执行次数(数组上的 forEach)

Swift Playground 中的 CABasicAnimation

如何通过在 swift playground 中传递 Int 数组来创建求和函数并调用它?

Swift Playground WebView 不会显示本地图像