如何在数组中的结构中打印变量?

时间:2016-11-12 18:45:39

标签: arrays swift

使用此Swift 3.0系列:

struct Person {
    var name: String
    var surname: String
    var phone: Int
    var isCustomer: Bool
}
var contacts: [Person] = []
contacts.append(Person(name: "Jack", surname: "Johnson", phone: 2, isCustomer: false))
contacts.append(Person(name: "Mike", surname: "Morris", phone: 3, isCustomer: true))

我创建了一个包含两个结构的数组,每个结构包含4个变量。 我可以像这样打印数组的单个对象:print(contacts[0].name) 但有没有办法一次打印Strings部分name的所有内容?

3 个答案:

答案 0 :(得分:6)

了解如何使用 AbsoluteLayout.SetLayoutFlags(mainContent, AbsoluteLayoutFlags.All); AbsoluteLayout.SetLayoutBounds(mainContent, new Rectangle(0f, 0f, 1f, 1f)); 。我用它所有的时间。

map

在此Apple文档中搜索有关Closures

print(contacts.map({ $0.name }))

答案 1 :(得分:2)

你必须遍历数组,要么随时打印值,要么将它们捕获到一个字符串中并立即打印出来。

这是一种方式:

dat

这是另一个:

for contact in contacts {
    print(contact.name)
}

最后,您可以使用分隔符将所有字符串连接到一个值,然后只打印一次。当你这样做时,contacts.forEach { print($0.name) } 函数会为你迭代数组:

joinWithSeparator

答案 2 :(得分:1)

您应该通过定义计算属性CustomStringConvertible来实现协议description

struct Person: CustomStringConvertible {
    var name: String
    var surname: String
    var phone: Int
    var isCustomer: Bool

    var description: String { 
        return
            "Name: \(name)\n" + 
            "Surname: \(surname)\n" +
            "Phone: \(phone)\n" +
            "Is Customer? \(isCustomer)\n"
    }
}

然后:

var contacts: [Person] = []
contacts.append(Person(name: "Jack", surname: "Johnson", phone: 2, isCustomer: false))
contacts.append(Person(name: "Mike", surname: "Morris", phone: 3, isCustomer: true))
print(contacts)

显然,您可以根据需要定义description

相关问题