Swift:无法分配类型'项目的值?'输入'项目?.Type'

时间:2017-02-24 21:04:00

标签: ios swift class

我有一个名为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
}

在ViewController中,我试图设置变量" item"像这样:

var item = Item?

该项目是可选项,因为只有在用户按下保存按钮时才会创建该项目。但是,在类型名称"之后有一个错误说"预期的成员名称或构造函数调用。我之前使用过类似Meal类的相同行没有问题。

当我尝试使用此代码创建项目时:

    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)

错误说"无法分配类型'项目的值?'输入'项目?.Type' (又名' Optional.Type')"。我是Swift的新手,不确定发生了什么以及问题出在哪里。

2 个答案:

答案 0 :(得分:2)

您的意思是将item声明为该类的成员,然后再将其实例化吗?如果是的话,

var item = Item?

应该是

var item: Item?

答案 1 :(得分:1)

  

类型名称后的预期成员名称或构造函数调用

表示

var item = Item() // constructor call

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

要声明一个没有默认值的可选项,你必须写

var item : Item?

您的混合表单var item = Item?是无效的语法。