A type with a customized textual representation suitable for debugging purposes.
SDK
- Xcode 7.0+
Framework
- Swift Standard Library
Declaration
Overview
Swift provides a default debugging textual representation for any type. That default representation is used by the String(reflecting:)
initializer and the debug
function for types that don’t provide their own. To customize that representation, make your type conform to the Custom
protocol.
Because the String(reflecting:)
initializer works for instances of any type, returning an instance’s debug
if the value passed conforms to Custom
, accessing a type’s debug
property directly or using Custom
as a generic constraint is discouraged.
Note
Calling the dump(_:
function and printing in the debugger uses both String(reflecting:)
and Mirror(reflecting:)
to collect information about an instance. If you implement Custom
conformance for your custom type, you may want to consider providing a custom mirror by implementing Custom
conformance, as well.
Conforming to the CustomDebugStringConvertible Protocol
Add Custom
conformance to your custom types by defining a debug
property.
For example, this custom Point
struct uses the default representation supplied by the standard library:
After adding Custom
conformance by implementing the debug
property, Point
provides its own custom debugging representation.