我花了很长时间试图弄清楚如何在 UserDefaults 中存储我的自定义结构数组。
这是我的代码:
struct DomainSchema: Codable {
var domain: String
var schema: String
}
var domainSchemas: [DomainSchema] {
get {
if UserDefaults.standard.object(forKey: "domainSchemas") != nil {
let data = UserDefaults.standard.value(forKey: "domainSchemas") as! Data
let domainSchema = try? PropertyListDecoder().decode(DomainSchema.self, from: data)
return domainSchema!
}
return nil
}
set {
UserDefaults.standard.set(try? PropertyListEncoder().encode(newValue), forKey: "domainSchemas")
}
}
struct SettingsView: View {
var body: some View {
VStack {
ForEach(domainSchemas, id: \.domain) { domainSchema in
HStack {
Text(domainSchema.domain)
Text(domainSchema.schema)
}
}
// clear …Run Code Online (Sandbox Code Playgroud) 如何将输入名称数组转换为点表示法,类似于验证器处理键的方式?我希望它也适用于非数组。
例如,假设我有:
$input_name_1 = 'city';
$input_name_2 = 'locations[address][distance]';
Run Code Online (Sandbox Code Playgroud)
我如何将其转换为:
$input_dot_1 = 'city';
$input_dot_2 = 'locations.address.distance';
Run Code Online (Sandbox Code Playgroud)