【问题标题】:How to remove [] from print struct (swift4)如何从打印结构中删除 [] (swift4)
【发布时间】:2017-10-10 01:18:01
【问题描述】:

我下面的代码打印了一个结构,它是我希望它对 [] 的期望。我只是想把它删除。我圈出了下面照片中的文字。我觉得这与[Person]有关。

      var contacts = [Person]()

@IBAction func press(_ sender: Any) {
    contacts.append(Person(name: a.text!,  phone: Int(c.text!)!))
    label.text = self.contacts.description
}}
struct Person {
var name: String
 var phone: Int}

extension Person: CustomStringConvertible {
var description: String {
return "\n\(name),\(phone)"
  }}

【问题讨论】:

    标签: ios struct printing label swift4


    【解决方案1】:

    您正在打印一个 Person 数组……而不仅仅是一个人。所以你得到方括号:

    bash-3.2$ swift
    Welcome to Apple Swift version 4.0 (swiftlang-900.0.63 clang-900.0.37). Type :help for assistance.
    1> struct Person { var name: String; var phone: Int}
    2> var contacts = [Person]()
    contacts: [Person] = 0 values
    3> contacts.append(Person(name: "john", phone: 911))
    4> extension Person: CustomStringConvertible { public var description: String { return "\n\(name),\(phone)" }}
    5> print(contacts)
    [
    john,911]
    6> print(contacts[0])
    
    john,911
    

    我猜你可以这样做:

    label.text = contacts.count == 0 ? "No people to contact" : contacts.map {$0.description}.joined(separator: "\n")
    

    这会将所有联系人连接成一个字符串,每个联系人由换行符分隔。

    另外,去掉 CustomStringConvertible 中的初始换行符,因为现在 joined 为您提供分隔符。

    【讨论】:

    • 好的,我已经为你加入了联系人。让我知道这是否适合你。 (然后检查我的答案作为您的解决方案!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多