如何正确打印结构?

Gar*_*abo 2 struct swift

我正在尝试在我的用户结构中存储一组存储结构,但我无法正确打印它.

struct users {
    var name: String = ""
    var stores: [store]
}

struct store {
    var name: String = ""
    var clothingSizes = [String : String]()        
}

var myFirstStore = store(name: "H&M", clothingSizes: ["Shorts" : "Small"])
var mySecondStore = store(name: "D&G", clothingSizes: ["Blouse" : "Medium"])

var me = users(name: "Me", stores: [myFirstStore, mySecondStore])
println(me.stores)
Run Code Online (Sandbox Code Playgroud)

Air*_*ity 11

你正在初始化它们就好了.问题是你的storestruct正在使用默认打印,这是一个丑陋的结构名称版本.

如果你使它符合CustomStringConvertible,它应该很好地打印出来:

// For Swift 1.2, use Printable rather than CustomStringConvertible 
extension Store: CustomStringConvertible {
    var description: String {
        // create and return a String that is how
        // you’d like a Store to look when printed
        return name
    }
}

let me = Users(name: "Me", stores: [myFirstStore, mySecondStore])
println(me.stores)  // prints "[H&M, D&G]"
Run Code Online (Sandbox Code Playgroud)

如果打印代码非常复杂,有时候实现起来更好Streamable:

extension Store: Streamable {
    func writeTo<Target : OutputStreamType>(inout target: Target) {
        print(name, &target)
    }
}
Run Code Online (Sandbox Code Playgroud)

ps约定是类似结构的类型以大写字母开头