我想在我的代码中保存一个不能修改为RestletEndpoint endpoint = context.getEndpoint("restlet:http://localhost:8080/api", RestletEndpoint.class);
endpoint.configureProperties(Collections.singletonMap("bridgeErrorHandler", true));
的结构。我经历了许多解决方案,但是每个人都建议在 struct 中使用UserDefaults
。我无法编辑该结构。有谁知道我们如何实现这一目标。
我试图将对象包装到Codable/NSCoding
上,但是在尝试保存时,它崩溃并显示“ 试图插入非属性列表对象”。是因为我的模型中没有nil值吗?
感谢您的帮助。
答案 0 :(得分:2)
如果您无法更改自己的struct
,请为其创建一个extension
并使其符合Codable
。
一旦符合Codable
,就可以使用JSONEncoder
和JSONDecoder
来回转换数据,然后从UserDefaults
保存/检索。
struct Sample {
var name = "Sample Struct"
}
extension Sample: Codable {
}
let obj = Sample()
let data = try? JSONEncoder().encode(obj)
//Saving in UserDefaults
UserDefaults.standard.set(data, forKey: "SampleStruct")
//Fetching from UserDefaults
if let data = UserDefaults.standard.data(forKey: "SampleStruct") {
let val = try? JSONDecoder().decode(Sample.self, from: data)
print(val) //Sample(name: "Sample Struct")
}
答案 1 :(得分:0)
我试图将对象包装到NSDictionary
如果不遵循function cambio(){
d3.selectAll(".filter-btn1").each(function(d){
cb = d3.select(this);
grp = cb.property("value")
if(cb.property("checked")){
if (grp === "Azuless") {
alert("Azuless")
node.style("opacity", 0.2);
}
}else{
alert("no chekeado");
node.style("opacity", 2.0);
}
})
}
d3.selectAll(".filter-btn1").on("change",cambio);
cambio();
,则无法保存自定义模型;如果不需要遵循,则应将其保存为通常的Codable/NSCoding
,而不会在其中包装任何自定义对象