プロトコル


CustomDebugStringConvertible


デバッグ目的に適した、カスタマイズされたテキスト表現を持つ型。


iOS 3.0+ iPadOS 3.0+ Mac Catalyst 13.0+ macOS 10.10+

tvOS 9.0+ VisionOS 1.0+ WatchOS 2.0+


protocol CustomDebugStringConvertible



必須 デフォルトの実装が提供されます。





概観


Swift は、あらゆる型に対してデフォルトのデバッグテキスト表現を提供します。このデフォルトの表現は、独自の表現を提供しない型の String(reflecting:) イニシャライザと debugPrint(_:) 関数によって使用されます。この表現をカスタマイズするには、型を CustomDebugStringConvertible プロトコルに準拠させます。


String(reflecting:) イニシャライザは 任意の 型のインスタンスに対して機能し、渡された値が CustomDebugStringConvertible に準拠している場合はインスタンスの debugDescription を返すため、型の debugDescription プロパティに直接アクセスしたり、CustomDebugStringConvertible を汎用制約として使用したりすることは推奨されません。


注意: dump(_:_:_:_:) 関数を呼び出してデバッガーに出力すると、String(reflecting:) と Mirror(reflecting:) の両方を使用してインスタンスに関する情報を収集します。カスタム型に CustomDebugStringConvertible 準拠を実装する場合は、CustomReflectable 準拠も実装してカスタムミラーを提供することを検討してください。


CustomDebugStringConvertible プロトコルに準拠


debugDescription プロパティを定義して、カスタム型に CustomDebugStringConvertible 準拠を追加します。


たとえば、このカスタム Point 構造体は、標準ライブラリによって提供されるデフォルトの表現を使用します。


  1. struct Point {
  2. let x: Int, y: Int
  3. }
  4. let p = Point(x: 21, y: 30)
  5. print(String(reflecting: p))
  6. // Prints "Point(x: 21, y: 30)"


debugDescription プロパティを実装して CustomDebugStringConvertible への準拠を追加した後、Point は独自のカスタムデバッグ表現を提供します。


  1. extension Point: CustomDebugStringConvertible {
  2. var debugDescription: String {
  3. return "(\(x), \(y))"
  4. }
  5. }
  6. print(String(reflecting: p))
  7. // Prints "(21, 30)"




トピックス


インスタンスプロパティ


var debugDescription: String

デバッグに適した、このインスタンスのテキスト表現。

必須 デフォルトの実装が提供されます。





関連


以下による継承


CodingKey


準拠する型


AnyHashable

AnyKeyPath

Array

Element が Copyable かつ Escapable に準拠している場合に準拠します。


ArraySlice

Element が Copyable かつ Escapable に準拠している場合に準拠します。


AutoreleasingUnsafeMutablePointer

CVaListPointer

Character

ClosedRange

Bound が Comparable に準拠する場合に準拠します。


CollectionOfOne

Element が Copyable かつ Escapable に準拠している場合に準拠します。


ContiguousArray

Element が Copyable かつ Escapable に準拠している場合に準拠します。


Dictionary

Key が Hashable に準拠し、Value が Copyable に準拠し、Value が Escapable に準拠する場合に準拠します。


Dictionary.Keys

Key が Hashable に準拠し、Value が Copyable に準拠し、Value が Escapable に準拠する場合に準拠します。


Dictionary.Values

Key が Hashable に準拠し、Value が Copyable に準拠し、Value が Escapable に準拠する場合に準拠します。


Double

Float

Float16

Float80

KeyPath

KeyValuePairs

Key が Copyable に準拠し、Key が Escapable に準拠し、Value が Copyable に準拠し、Value が Escapable に準拠する場合に準拠します。


ObjectIdentifier

OpaquePointer

Optional

Wrapped が Copyable および Escapable に準拠する場合に準拠します。


PartialKeyPath

Range

Bound が Comparable に準拠する場合に準拠します。


ReferenceWritableKeyPath

SIMD16

Scalar が SIMDScalar に準拠する場合に準拠します。


SIMD2

Scalar が SIMDScalar に準拠する場合に準拠します。


SIMD3

Scalar が SIMDScalar に準拠する場合に準拠します。


SIMD32

Scalar が SIMDScalar に準拠する場合に準拠します。


SIMD4

Scalar が SIMDScalar に準拠する場合に準拠します。


SIMD64

Scalar が SIMDScalar に準拠する場合に準拠します。


SIMD8

Scalar が SIMDScalar に準拠する場合に準拠します。


Set

Element が Hashable に準拠する場合に準拠します。


StaticBigInt

StaticString

String

String.UTF16View

String.UTF8View

String.UnicodeScalarView

Substring

Unicode.Scalar

UnsafeBufferPointer

Element が Escapable に準拠している場合に準拠します。


UnsafeMutableBufferPointer

Element が Escapable に準拠している場合に準拠します。


UnsafeMutablePointer

Pointee が Escapable に準拠する場合に準拠します。


UnsafeMutableRawBufferPointer

UnsafeMutableRawPointer

UnsafePointer

Pointee が Escapable に準拠する場合に準拠します。


UnsafeRawBufferPointer

UnsafeRawPointer

WordPair

WritableKeyPath





以下も見よ


文字列表現


protocol CustomStringConvertible

カスタマイズされたテキスト表現を持つ型。


protocol LosslessStringConvertible

ロスのない、かつ明確な方法で文字列として表現できる型。















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ