2017-02-24 4 views
2

Ich habe eine Klasse namens Artikel mit den folgenden Eigenschaften zu geben:Swift: Kann den Wert vom Typ 'Item?' ‚? Artikel .Type‘

var name: String 
var photo: UIImage? 
var description: String? 
var favorite: Bool 

Die init-Methode sieht so aus:

init?(name: String, photo: UIImage?, description: String?, 
    favorite: Bool) { 

    guard !name.isEmpty else { 
     return nil 
    } 

    self.name = name 
    self.photo = photo 
    self.description = description 
    self.favorite = favorite 
} 

Im Viewcontroller, ich versuche zu instate die Variable „Position“ wie folgt:

var item = Item? 

der Artikel ist optional, weil es nur dann, wenn der Benutzer erstellt wird, um die Taste speichern gedrückt. Es gibt jedoch einen Fehler, der besagt "Erwarteter Mitgliedsname oder Konstruktoraufruf nach Typname". Ich habe die gleiche Zeile mit einer ähnlichen Mahlzeit-Klasse zuvor ohne Probleme verwendet.

Wenn ich versuche, das Element mit diesem Code zu erstellen: ‚Item‘

let name = nameTextField.text ?? "" 
    let photo = photoImageView.image 
    let favorite = favoriteButton.favorite 
    let description = descriptionTextView.text 

    item = Item(name: name, photo: photo, description: description, favorite: favorite) 

ein Fehler sagt: „Kann nicht Wert vom Typ zuordnen "Item? .Type" (aka 'Optional.Type') eingeben ". Ich bin neu bei Swift und bin mir nicht sicher, was passiert und wo das Problem liegt.

Antwort

2

Meinst du, item als ein Mitglied der Klasse zu deklarieren und dann später instanziieren? Wenn ja,

var item = Item? 

sollte

var item: Item? 
1

Erwartete Mitgliedsnamen oder Konstruktoraufruf nach Typnamen

bedeutet entweder

var item = Item() // constructor call 

oder

var item = Item.foo // member name, foo is some type property 

Um einen optionalen ohne Standardwert erklären Sie

var item : Item? 

Ihre Hybrid Form var item = Item? ist nicht gültig Syntax zu schreiben.

Verwandte Themen