我想要一个具有可选功能的模型“地方”。
struct PlaceObj: Identifiable {
let id = UUID()
let name: String
let image: UIImage
}
Run Code Online (Sandbox Code Playgroud)
并非每个 PlaceItem 都可能有图像,因此我想将其保留为可选。我想这样使用它:
PlaceObj(
name: "Place1"
)
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误,即图像未定义,这意味着我必须这样做:
PlaceObj(
name: "Place1",
image: nil
)
Run Code Online (Sandbox Code Playgroud)
但除非我在 UIImage 后面加上问号,否则我不能做 nil 。有没有最佳实践/首选方法来处理这个问题?在尝试使用它时,是否没有办法在每个实例化中省略“image:nil”?
给它一个默认值nil,编译器生成的默认成员初始化程序将具有要匹配的默认参数,这要归功于SE-0242 \xe2\x80\x93 合成成员初始化程序的默认值:
struct PlaceObj: Identifiable {\n let id = UUID()\n let name: String\n var image: UIImage? = nil\n}\nRun Code Online (Sandbox Code Playgroud)\n编译器提供的初始化程序的行为就像您编写的那样:
\ninit(name: String, image: UIImage? = nil) {\n self.name = name\n self.image = image\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3094 次 |
| 最近记录: |