Javaに相当するSwiftとは何ですか toString()
クラスインスタンスの状態を出力するにですか?
回答:
description
プロパティは、あなたが探しているものです。これは、オブジェクトを含む変数を出力するときにアクセスされるプロパティです。
description
プロトコルCustomStringConvertible
を採用してからdescription
プロパティを実装することで、独自のクラスに追加できます。
class MyClass: CustomStringConvertible {
var val = 17
public var description: String { return "MyClass: \(val)" }
}
let myobj = MyClass()
myobj.val = 12
print(myobj) // "MyClass: 12"
description
String
コンストラクターを呼び出すときにも使用されます。
let str = String(myobj) // str == "MyClass: 12"
これは、インスタンスの説明にアクセスするための推奨される方法です(myobj.description
クラスが実装されていない場合は機能しませんCustomStringConvertible
)。
String(obj)
ですか?
.debugDescription
よりプログラマーに優しいバージョンもあります
を使用する必要がありますString(obj)
。
CustomStringConvertibleのドキュメントから直接:
注意
String(instance)は任意のタイプのインスタンスで機能し、インスタンスがCustomStringConvertibleである場合はその説明を返します。したがって、CustomStringConvertibleをジェネリック制約として使用したり、適合型の説明に直接アクセスしたりすることはお勧めしません。
description()
方法でCustomStringConvertible
十分なようです。
NSObject
拡張クラスでどのように行われるかモデルクラスがから拡張されNSObject
ている場合はdescription
、次のように変数をオーバーライドする必要があります。
public override var description: String {
return "\n{\n index: \(self.index),\n"
+ " country: \(self.name),\n"
+ " isoCountryCode: \(self.isoCountryCode),\n"
+ " localeId: \(self.localeId),\n"
+ " flagImageName: \(self.flagImageName!)\n}"
}
あなたは、私はそれを行っているか確認することができ以内にこちらCountry
クラスでは、「CountryPickerのiOSスウィフトライブラリー」。
または、理解しやすくするために、クラスとdescription
メソッドは次のようになります。
public class MyClass: NSObject {
public var memberAttribute = "I'm an attribute"
public override var description: String {
return "My Class member: \(self.memberAttribute)"
}
}
注:
Modalクラスを拡張NSObject
するため、クラスがクラスに準拠するCustomStringConvertible
必要がなくなりdescription
、NSObject
クラス自体から変数をオーバーライドすることになります。常に覚えておいてください、これCustomStringConvertible
は主にこれを達成するための純粋なSwiftの方法です。