我知道在使用带有@AppStorage 的字典时我需要Dictionary
遵守。RawRepresentable
下面是我得到的最远的。
extension Dictionary: RawRepresentable where Key == String, Value == String {
public init?(rawValue: String) {
guard let data = rawValue.data(using: .utf8), // convert from String to Data
let result = try? JSONDecoder().decode([String:String].self, from: data)
else {
return nil
}
self = result
}
public var rawValue: String {
guard let data = try? JSONEncoder().encode(self), // data is Data type
let result = String(data: data, encoding: .utf8) // coerce NSData to String
else {
return "[:]" // empty Dictionary respresented as String
}
return result
}
}
扩展编译。但是当我声明一个空字典时它不起作用:
@AppStorage private var data : [String:String] = [:]
错误信息是Missing argument for parameter #2 in call
代码有什么问题?
您缺少存储的字符串键:
@AppStorage("data") private var data : [String:String] = [:]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句