在使用 SwiftUI 开发 iOS 应用程序时,我面临以下情况。根据我在网上的一些教程中找到的内容,我设置了一个自定义环境密钥。这是 SceneDelegate.swift 文件中的相关代码。
.....
private struct RowColorMaster: EnvironmentKey {
static let defaultValue:[[String:Color]] = [[:]]
}
extension EnvironmentValues {
var rowColorMasterDico:[[String:Color]] {
get {self[RowColorMaster.self]}
set {self[RowColorMaster.self] = newValue}
}
}
.....
var rowColorMasterDico:[[String:Color]]
// Initialize rowColorMasterDico:
rowColorMasterDico = ......
.....
let contentView = ContentView(.....)
.environment(\.managedObjectContext, context)
.environment(\.rowColorMasterDico, rowColorMasterDico)
.....
然后在某个文件中进一步向下查看层次结构:
.....
@Environment(\.rowColorMasterDico) var rowColorMasterDico
.....
func handleEvent(_ file: String, flag: Bool) {
rowColorMasterDico[page.index][file] = flag ? Color.red : Color.white
}
起初一切似乎都很顺利,直到我遇到了这个错误消息的 handleEvent 函数的执行:
Cannot assign through subscript: 'rowColorMasterDico' is a get-only property
我可以在我的代码中修改什么(可能是我的自定义环境键的设置方式)以便能够通过下标进行分配?