ios – Swift equivalent of Java toString()

ios – Swift equivalent of Java toString()

The description property is what you are looking for. This is the property that is accessed when you print a variable containing an object.

You can add description to your own classes by adopting the protocol CustomStringConvertible and then implementing the description property.

class MyClass: CustomStringConvertible {
    var val = 17

    public var description: String { return MyClass: (val) }
}

let myobj = MyClass()
myobj.val = 12
print(myobj)  // MyClass: 12

description is also used when you call the String constructor:

let str = String(myobj)  // str == MyClass: 12

This is the recommended method for accessing the instance description (as opposed to myobj.description which will not work if a class doesnt implement CustomStringConvertible)

If it is possible to use the struct instead of class, then nothing additional to do.

struct just prints fine itself to the output

print((yourStructInstance))

or with class like this:

print(String(describing: yourClassInstance))

ios – Swift equivalent of Java toString()

You should use String(obj).

Direct from the documentation for CustomStringConvertible:

NOTE

String(instance) will work for an instance of any type, returning its
description if the instance happens to be CustomStringConvertible.
Using CustomStringConvertible as a generic constraint, or accessing a
conforming types description directly, is therefore discouraged.

Leave a Reply

Your email address will not be published. Required fields are marked *