2017-02-24 59 views
2

我有一個叫項具有以下屬性類:Swift:無法分配'Item?'類型的值鍵入「項目。鍵入?」

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

init方法看起來像這樣:

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 
} 

在視圖控制器,我想instate變量「項目」,例如:

var item = 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) 

錯誤說「無法分配類型的值鍵入'Item?.Type'(又名'Optional.Type')「。我對Swift很陌生,不確定發生了什麼以及問題出在哪裏。

回答

2

您是否想要將item聲明爲類的成員,然後再實例化它?如果是這樣,

var item = Item? 

應該

var item: Item? 
1
類型名稱後

預期的會員名稱或構造函數調用

意味着要麼

var item = Item() // constructor call 

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

要聲明一個可選的,但沒有默認值,你必須編寫

var item : Item? 

混合形式var item = Item?是無效的語法。

相關問題