Ich habe drei Textfelder, die ich verwende, um Daten an eine Struktur anzufügen. Wie kann ich drucken, was ich angehängt habe? Jetzt bekomme ich eine Fehlermeldung.Angehängte Druckstruktur (swift4)
Antwort
Ich habe Ihren Code geändert, Sie können es verwenden, es wird Ihnen das Ergebnis geben, was Sie wollen.
import UIKit
class ViewController: UIViewController {
@IBOutlet var c: UITextField!
@IBOutlet var a: UITextField!
@IBOutlet var b: UITextField!
var contacts: [Person] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func press(_ sender: Any) {
contacts.append(Person(name: a.text!, surname: b.text! , phone: Int(c.text!)!))
print(self.contacts.description)
}
struct Person {
var name: String
var surname: String
var phone: Int
}}
Ich habe gerade eine Änderung in Druckaussage gemacht. Da Ihr Kontaktarray in Ihnen den Controller selbst anzeigt, können Sie ihn direkt verwenden und die Funktionsbeschreibung zum Drucken von Aktualisierungswerten von Kontakten verwenden.
print(ViewController.Person)
falsch ist
Bitte verwenden:
print(contacts.last)
Sie versuchen die tatsächliche struct
von Person
zu drucken. Sie möchten eine bestimmte Instanz drucken.
können Sie das gesamte Array drucken, wie:
@IBAction func press(_ sender: Any) {
let person = Person(name: a.text!, surname: b.text! , phone: Int(c.text!)!)
print(person)
contacts.append(person)
}
Aber um den Druck nützlich:
print("contacts: \(contacts)")
Wenn Sie das eine Instanz ausdrucken möchten, würde ich Ihren Code ein wenig vorschlagen Aufspalten Sie sollten die description
-Eigenschaft zu Ihrer Struktur hinzufügen und Ihre Struktur an CustomStringConvertible
anpassen.
struct Person: CustomStringConvertible {
var name: String
var surname: String
var phone: Int
var description: String {
return "Person name: \(name), surname: \(surname), phone: \(phone)"
}
}
Sie sollten auch lernen, sicher mit Optionals umzugehen. Der Operator !
bedeutet "Absturz wenn nicht Null". Ihr Code stürzt ab, wenn der Benutzer "Hello" in das Telefonfeld eingibt.
@IBAction func press(_ sender: Any) {
if let name = a.text, let surname = b.text, let phoneStr = c.text, let phone = Int(phoneStr) {
let person = Person(name: name, surname: surname, phone: phone)
print(person)
contacts.append(person)
}
}
Und auch, dass eine Telefonnummer kein numerischer Wert ist. Verwenden Sie String
, nicht Int
, um Telefonnummern zu speichern.
- 1. jsqmessagesviewcontroller inputToolBar IOS 11 iphone X Swift4
- 2. Swift4/JSON/Decode
- 3. sort coreData fetch (swift4)
- 4. LTMorphingLabel Swift4 Fehler
- 5. Wie Coredata-Datenbank erstellen swift4
- 6. Ruby: Wie IRB-Druckstruktur für Arrays und Hashes
- 7. Angehängte Eigenschaftenvererbung zum Weitergeben
- 8. eine angehängte Datei (Windows)
- 9. Angehängte Parameter zu POST
- 10. Angehängte Eigenschaft geändertes Ereignis?
- 11. Angehängte Methode mit Parametern
- 12. Angehängte Sammlungselemente Datenkontext verlieren
- 13. Angehängte Verhaltensweisen oder Interaktion.Triggers?
- 14. Bind-Methoden für angehängte Elemente
- 15. FormData nicht angehängte Datei senden
- 16. Erhalten Sie formData angehängte Daten
- 17. jquery autocomplete - Anklickbare angehängte Elemente
- 18. Laravel selectRaw lässt angehängte Spalten
- 19. twisted self.transport.write() - Python - Angehängte Ausgabe
- 20. Angehängte Link-Schaltflächen mit jQuery
- 21. Schneiden? eine angehängte Liste Python
- 22. Angehängte Klassen mit Jquery bestellen
- 23. json swift4 Wie setzt man die Struktur?
- 24. Init akzeptiert keinen int-Wert (swift4)
- 25. iOS Swift4 - Lazy-Variable neu initialisieren
- 26. speichern mit Datei-Manager in swift4
- 27. Wie OC in Swift4 unter Code konvertieren?
- 28. Wie Nummer in Struct-Array (Swift4) einfügen
- 29. Swift4 Json Parse Alamofire Set Struct
- 30. Kindobjekt in Core Data Beziehung hinzufügen - Swift4
Wenn der Benutzer eine beliebige Ziffer eingibt oder einen Text einfügt, der keine Ganzzahlen enthält, stürzt die App ab. Außerdem ist es sehr üblich, Telefonnummern + und 0 als Präfix hinzuzufügen. OP sollte es als String nicht Ganzzahlen speichern. –
@LeoDabus Auch zu Ihrem Kommentar hinzufügen, auch wenn die Telefonnummer nur Ziffern enthält, sollte es immer noch nicht ein "Int" sein. Bei einer Telefonnummer wird keine Berechnung durchgeführt. Eine Telefonnummer ist nur ein Etikett. – rmaddy