【发布时间】:2019-05-04 06:43:53
【问题描述】:
我试图将字典存储在我的类 Marker 中,但它抛出一个错误,说它不可编码或不可解码。我可以看到错误是由 [String: Any] 引起的,但我该如何解决呢?
var buttonActions : [String: [String: [String:Any]]] = [:]
保存并加载
func saveData() {
let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("\(fileName).plist")
let encoder = PropertyListEncoder()
do {
let data = try encoder.encode(markerArray)
try data.write(to: dataFilePath!)
print("Saved")
} catch {
print("Error Encoding \(error)")
}
}
func loadData() {
let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("\(fileName).plist")
if let data = try? Data(contentsOf: dataFilePath!){
let decoder = PropertyListDecoder()
do {
markerArray = try decoder.decode([Marker].self, from: data)
} catch {
print("Decode Error \(error)")
}
}
类
class Marker : Encodable, Decodable {
var UUIDpic: UUID = UUID()
var alpha: Int = 1
var buttonType: Int = 0
var buttonActions : [String: [String: [String:Any]]] = [:]
var buttonNameColor: String = ""
var buttonNameFontSize: Int = 10
var buttonShape: String = ""
var loggerRect: String = ""
var maskColor: String = ""
var name: String = ""
}
【问题讨论】:
-
您无法对
Any进行编码/解码。内部字典中实际包含哪些类型的值? -
内部字典包含一个字符串和一个字符串数组
标签: swift dictionary encoding nested decode