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"
descriptionStringコンストラクターを呼び出すときにも使用されます。
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の方法です。