Qual è l'equivalente Swift di Java .toString() per stampare lo stato di un'istanza di classe?equivalente Swift di Java .toString()
risposta
La proprietà description
è ciò che stai cercando. Questa è la proprietà a cui si accede quando si stampa una variabile contenente un oggetto.
È possibile aggiungere description
alle proprie classi adottando il protocollo CustomStringConvertible
e quindi implementando la proprietà 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
viene utilizzato anche quando si chiama il costruttore di String
:
let str = String(myobj) // str == "MyClass: 12"
Questo è il metodo consigliato per l'accesso alla descrizione istanza (al contrario di myobj.description
che non funziona se una classe non lo fa attuare CustomStringConvertible
)
Che dire di 'String (obj)'? – nielsbot
C'è anche '.debugDescription' per una versione più adatta ai programmatori – nielsbot
si applica alle strutture? – lmiguelvargasf
È necessario utilizzare String(obj)
.
diretta da the documentation for CustomStringConvertible:
NOTA
String (esempio) funziona per un'istanza di qualsiasi tipo, tornando sua descrizione se l'istanza sembra essere CustomStringConvertible. L'utilizzo di CustomStringConvertible come un vincolo generico o l'accesso diretto a una descrizione del tipo conforme a , è pertanto sconsigliato.
Sembra che il metodo 'description()' di 'CustomStringConvertible' sia sufficiente. –
Se è possibile utilizzare la struct anziché la classe, niente di più da fare.
struct stampa bene stesso per l'uscita
print("\(yourStructInstance)")
o con classe come questa:
print(String(describing: yourClassInstance))
- 1. toString() equivalente in OCaml
- 2. Swift equivalente di Array.componentsJoinedByString?
- 3. Equivalente Swift di @encode
- 4. Equivalente Swift di removeObjectsInRange:
- 5. Java: enum toString()
- 6. toString Uitvoeringsbesluit enumerazioni Java
- 7. equivalente su Objective C/Swift di Java ThreadLocal variabili
- 8. Equivalente Java di Python repr()?
- 9. Equivalente android.content.BroadcastReceiver in Swift
- 10. javascript equivalente di join() e toString() in C#?
- 11. Enum Java che sovrascrive toString()
- 12. Equivalente di .map di Swift nell'obiettivo C?
- 13. Equivalente Java di Reflection.Emit
- 14. java equivalente di swfobject
- 15. Java equivalente di OpenLayers
- 16. Swift equivalente a __attribute ((objc_requires_super))?
- 17. Verificare che le classi Java implementino toString()
- 18. Java: StringBuffer al byte [] senza toString
- 19. toString() un tipo generico in Java
- 20. Come utilizzare il metodo toString in Java?
- 21. . Equivalente a Java AssertionError Java
- 22. ToString ("0") versus ToString (CultureInfo.InvariantCulture)
- 23. C# Equivalente di Java IdentityHashMap
- 24. Oracle equivalente di Varargs Java
- 25. equivalente di ungetc In java
- 26. Java equivalente di JavaScript String.match()
- 27. Equivalente di #define in Java?
- 28. Equivalente Java di C# system.beep?
- 29. Equivalente Java di C# 'Enumerable.Any'
- 30. di java() equivalente in pitone
Maggiori info @ http://stackoverflow.com/questions/24068506/how-can- i-change-the-textual-representation-display-for-a-type-in-swift –