Was ist das Swift-Äquivalent von Java .toString(), um den Status einer Klasseninstanz zu drucken?Schnelles Äquivalent von Java .toString()
Antwort
Die description
Eigenschaft ist, was Sie suchen. Auf diese Eigenschaft wird zugegriffen, wenn Sie eine Variable drucken, die ein Objekt enthält.
Sie können description
zu Ihren eigenen Klassen hinzufügen, indem Sie das Protokoll übernehmen und anschließend die description
-Eigenschaft implementieren.
let str = String(myobj) // str == "MyClass: 12"
nicht Dies ist die empfohlene Methode für den Zugriff auf die Instanz Beschreibung (im Gegensatz zu myobj.description
, die nicht funktionieren, wenn eine Klasse tut:
class MyClass: CustomStringConvertible {
var val = 17
public var description: String { return "MyClass: \(val)" }
}
let myobj = MyClass()
myobj.val = 12
print(myobj) // "MyClass: 12"
description
ist auch, wenn Sie den String
Konstruktor aufrufen verwendet implementieren)
Was ist mit 'String (obj)'? – nielsbot
Es gibt auch '.debugDescription' für eine programmiererfreundlichere Version – nielsbot
gilt es für Strukturen? – lmiguelvargasf
Sie sollten String(obj)
verwenden.
Direkt aus the documentation for CustomStringConvertible:
HINWEIS
String (Beispiel) wird für eine Instanz von jeder Art arbeiten, seine Beschreibung der Rückkehr, wenn die Instanz CustomStringConvertible sein geschieht. Die Verwendung von CustomStringConvertible als generische Einschränkung oder der direkte Zugriff auf eine konforme Typbeschreibung wird daher nicht empfohlen.
Scheint wie die 'description()' Methode von 'CustomStringConvertible' wäre ausreichend. –
Wenn es möglich ist, die Struktur statt der Klasse zu verwenden, dann nichts weiter zu tun.
struct gerade druckt fein selbst an den Ausgang
print("\(yourStructInstance)")
oder mit Klasse wie folgt:
print(String(describing: yourClassInstance))
- 1. Schnelles Äquivalent von String.format und .Replace?
- 2. Kulturspezifisches Äquivalent von ToString ("0.0 ##")
- 3. fail schnelles Verhalten von Java HashMap
- 4. Java-Äquivalent von OpenLayers
- 5. Java: enum toString()
- 6. Javascript-Äquivalent von Join() und toString() in C#?
- 7. Swift-Äquivalent von '#' + Math.random() toString (16) .slice (2, 8)
- 8. Java toString Methodenunterschied
- 9. Verwendung von toString() für Komponententests in Java
- 10. Parsen eines Java-Datums zurück von toString()
- 11. .NET-Äquivalent von java.util.Arrays.toString (...) Methoden in Java
- 12. Java - Übergeordnete hashCode und toString
- 13. Java-Äquivalent von Register int?
- 14. PHP-Äquivalent von Java getBytes()
- 15. Java-Äquivalent von .NET-Konstrukten
- 16. Java-Äquivalent von cin (C++)
- 17. Java-Äquivalent von C# 'Enumerable.Any'
- 18. Java-Äquivalent von Pythons struct.pack?
- 19. Java Äquivalent von JavaScript String.match()
- 20. Java-Äquivalent von Pythons getattr?
- 21. Python-Äquivalent von Java Redirect.INHERIT
- 22. Python-Äquivalent von Java OutputStream?
- 23. Äquivalent von memcmp() in Java?
- 24. Java-Äquivalent von Perls /// Operator?
- 25. Java-Äquivalent von Pythons struct.unpack?
- 26. Java toString ArrayList ohne Klammern
- 27. Warum Methode toString() in Java
- 28. Implementierung toString auf Java Aufzählungen
- 29. C# -Äquivalent von Java KDFCounterBytesGenerator (von bouncycastle)
- 30. Äquivalent von IllegalArgumentException von Java in C++
Mehr info @ http://stackoverflow.com/questions/24068506/how-can- i-change-the-textual-representation-displayed-for-ein-type-in-swift –