Swift Playground中的2D数组

时间:2016-03-29 14:48:02

标签: arrays swift swift-playground

我正在尝试为我的游戏编写一个关卡生成器,所以我在Swift游乐场测试它。我的关卡存储在2D Swift数组中。一切都很好,除了我无法以有用的方式看到数组数据。因为它是平铺游戏中的关卡数据,所以我希望看到整齐排列的行和列。但是,该阵列目前只是一行调整大小到控制台的大小。如何才能看到行和列排列得很好? 这是我目前的输出:

[[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]]

通过调整控制台的大小,我可以获得一些不错的结果,但必须有更好的方法来实现这一点。

3 个答案:

答案 0 :(得分:1)

您可以根据需要在二维数组中放置尽可能多的换行符,以使数据看起来更好:

let array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9] 
]

答案 1 :(得分:1)

如果你想在控制台中用你的内容对齐来表示你的2D数组,我的建议是让持有数组的类符合协议CustomStringConvertible

为此,您必须创建一个description计算属性,这是我们进行格式化的地方:我们将内部数组转换为字符串并使用行分隔符将它们连接起来。

协议的一致性使得对象在打印时输出计算属性的结果。

示例:

class BigArrayRepresenter: CustomStringConvertible {

    var bigArray: [[String]] = []

    init(bigArray: [[String]]) {
        self.bigArray = bigArray
    }

    var description: String {
        return bigArray.map { String($0) }.joinWithSeparator("\n")
    }

}

使用你的阵列:

let source = [[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]]
let representer = BigArrayRepresenter(bigArray: source)
print(representer)

我们得到了这个结果:

enter image description here

答案 2 :(得分:0)

答案:编写您自己的UIView子类,并使用XCPlaygroundLiveViewable protocol显示它。