Print properties of object in Swift

Reference: StackOverflow – Print Struct name in swift

Here’s the code for printing the properties of an object

func printProperties(_ object: Any) {
    var properties = [String: Any]()
    Mirror(reflecting: object).children.forEach { (child) in
        if let property = child.label {
            properties[property] = child.value
        }
    }

    print(object)
    print(type(of: object))
    print(properties)
}

How the output would look like when used on a struct

struct PersonStruct {
    public let firstName: String
    internal let lastName: String // default access level is internal
    private let email: String = "test@example.com"
}

let person = PersonStruct(firstName: "John", lastName: "Doe")
printProperties(person)

/* Output
PersonStruct(firstName: "John", lastName: "Doe", email: "test@example.com")
PersonStruct
["lastName": "Doe", "email": "test@example.com", "firstName": "John"]
*/

How the output would look like when used on a class

class PersonClass {
    public let firstName: String
    internal let lastName: String // default access level is internal
    private let email: String = "test@example.com"

    init(firstName: String, lastName: String) {
        self.firstName = firstName
        self.lastName = lastName
    }
}

let person = PersonClass(firstName: "John", lastName: "Doe")
printProperties(person)

/* Output
MyApp.PersonClass
PersonClass
["lastName": "Doe", "email": "test@example.com", "firstName": "John"]
*/