我有一个名为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的新手,不确定发生了什么以及问题出在哪里。
答案 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?
是无效的语法。