【发布时间】:2021-11-17 05:04:47
【问题描述】:
我有一个 JSON 文件,其中有两个图标名称:normal 和 active。
我使用它们来获取系统图标,我想将它们放入图像数组中。
当我单独加载它们时,它工作得很好:
struct loadData: Hashable, Codable {
//load some data...
private var normal_name: String
private var active_name: String
var normal_icon: Image {
Image(systemName: normal_name)
}
var active_icon: Image {
Image(systemName: normal_name)
}
}
当我尝试将获取的图像放入一个数组时,它会抛出一个错误:
var icon: [Image] = [
normal_icon,
active_icon
]
即使我尝试直接加载它们,它仍然会抛出相同的错误:
var icon: [Image] = [
Image(systemName: normal_name),
Image(systemName: normal_name)
]
我得到的错误是这样的:
不能在属性初始化器中使用实例成员“normal_icon”;属性初始化器在“self”可用之前运行
我知道我可以使用计算属性来解决这个问题,我的问题是:
为什么允许我初始化字符串 (normal_name) 然后初始化图像 (normal_icon) 而不会出错,但是当我在数组中执行它时它不起作用?
【问题讨论】:
-
因为
norrmal_icon和normal_name是计算属性,而icon是存储属性。 -
您可以将图标重构为计算属性。
标签: arrays swift initialization