使用此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
的所有内容?
答案 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
。