Skip to content

Instantly share code, notes, and snippets.

@alansvits
Created October 21, 2018 16:37
Show Gist options
  • Save alansvits/793792979bb15d4d9024b96138c0d565 to your computer and use it in GitHub Desktop.
Save alansvits/793792979bb15d4d9024b96138c0d565 to your computer and use it in GitHub Desktop.
String description of object properties
import Foundation
extension CustomStringConvertible {
var description: String {
var description: String = "\(type(of: self))("
let selfMirror = Mirror(reflecting: self)
for child in selfMirror.children {
if let propertyName = child.label {
description += "\(propertyName): \(child.value), "
}
}
description += "<\(Unmanaged.passUnretained(self as AnyObject).toOpaque())>)"
return description
}
}
class Person: CustomStringConvertible {
let name: String
let age: Int
init (name: String, age: Int) {
self.name = name
self.age = age
}
}
let alex = Person(name: "Alex", age: 20)
print(alex) // Person(name: Alex, age: 20, <0x000060c000058d20>)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment