Genau wie das Thema sagt, gibt es eine Klasse, ich möchte Werte für die Eigenschaften in Runtime setzen, und ich habe die Werte, die von NSObject KVC mechanism and Reflect mechanism
vererbt werden, gesetzt, und ich muss auch Werte für diejenigen, die haben 't geerbt von NSObject, wie dataType ist Int, Double
. Wie kann ich es schaffen?Wie setze ich den Wert für den Schlüssel welchen Typ ist der grundlegende Datentyp in Runtime in swift?
Antwort
Die Signatur von setValue(value: Any?, forKey: String)
dauert Any?
anstelle von AnyObject?
. Daher ist es nicht notwendig, dass dieser Wert eine NSObject-Unterklasse ist.
class MyClass : NSObject {
public var intField : Int = 100;
public var doubleField : Double = 10.0;
}
let a = MyClass()
a.setValue(200, forKey: "intField")
a.setValue(20.0, forKey: "doubleField")
print(a.intField) // Output: 200\n
print(a.doubleField) // Output: 20.0\n
Danke für Ihren anwser, aber ich habe vergessen zu sagen, ob der dataType Optional ist ? Wie man es macht? – Shaw
Sie könnten diese Antwort betrachten: http://StackOverflow.com/a/31353182/1755075 Um von dieser Antwort zu zitieren, "Wenn Sie wirklich benötigen, um ein Optional zu sein, und wenn Sie wirklich KVC verwenden müssen darauf, dann deklariere es als NSNumber ?, nicht Int ?. " – ewcy
Ich weiß, NSNumber zu verwenden, aber ich möchte nicht, ich frage mich nur, ob es eine andere Methode gibt, um das Ziel zu erreichen, danke dir trotzdem. – Shaw
- 1. Welchen Swift-Datentyp verwende ich für Währung?
- 2. kenne den Datentyp in Swift
- 3. Wie setze ich den Wert in der Dropdownliste in Angularjs?
- 4. Was ist der Java-Typ für den Oracle-Datentyp raw?
- 5. Wie setze und bekomme ich den Wert des Zeigers Swift
- 6. Wie setze ich den Date-Wert in neo4j auf Null?
- 7. Wie setze ich den Wert in der Textansicht mit Expandablelistview
- 8. Wie setze ich den Wert von TextView in der Anwendung?
- 9. Klasse ist nicht Schlüsselcodierung-kompatibel für den Schlüssel in Swift
- 10. Wie setze ich den Patch-Wert (update den geschachtelten Wert) in Array in Array in angular2?
- 11. Wie setze ich den Cookie-Wert?
- 12. Wie vergleiche ich den alten Datentyp Wert mit den neuen
- 13. Wie setze ich den Wert in @ Html.TextBoxFor in Razor Syntax?
- 14. Welchen Mime-Typ sollte ich für den BASIC-Code verwenden?
- 15. KeyPairValue Linq Wie setze ich den Wert
- 16. Wie setze ich den Wert in hashmap key: Wertpaar bedingt?
- 17. Wie setze ich den Wert innerhalb einer Liste in Python?
- 18. Wie setze ich den Wert für das Formularelement mit mootools
- 19. Welchen Datentyp sollte Timestamp in DynamoDB verwenden?
- 20. Wie setze ich den richtigen Wert auf 'all' in mysql
- 21. String in den entsprechenden Datentyp konvertieren
- 22. Wie Dictionary-Typ in Schlüssel-Wert-Speicher mit Swift angeben?
- 23. Wie setze ich den Standardwert in der ComboBox javafx?
- 24. Wie setze ich den Wert einer Variablen in T-SQL?
- 25. Wie setze ich den Wert der Eingangsnummer mit jQuery?
- 26. Konnte keinen Initialisierer für den Typ Double in Swift finden
- 27. Wie setze ich den Programmtitel in Python?
- 28. Wie erhalte ich den Eckradius der Zeichnungsressource in Runtime?
- 29. Wie setze ich die Winkelvariable auf den Wert der Abfragezeichenfolge?
- 30. Wie ändere ich den Datentyp für eine Spalte in MySQL?
Wenn Sie alle Eigenschaften zu reflektieren und versuchen KVC setValue zu verwenden: forKey: und Wert: Funktion, es könnte ein bisschen Schmerz sein, eine generische Methode zu schreiben, das zu tun (wie Sie codieren möchten oder dekodiere JSON zu deiner Klasse). Zu diesem Thema können Sie den ServiceStack.Swift-Quellcode überprüfen, um zu sehen, wie diese großartige Bibliothek funktioniert: https://github.com/ServiceStack/ServiceStack.Swift – bubuxu