Swift 在UserDefault问题中保存自定义词典

Swift 在UserDefault问题中保存自定义词典,swift,Swift,如何在UserDefault中保存自定义词典,我尝试通过PropertyStencoder,但出现了一个错误 struct pointDict { let id: Int let name: String let type: Int8 } var pointsPlane: [pointDict] = [] ... UserDefaults.standard.set(try? Pro

如何在UserDefault中保存自定义词典,我尝试通过PropertyStencoder,但出现了一个错误

    struct pointDict {
          let id: Int
          let name: String
          let type: Int8   
      }

    var pointsPlane: [pointDict] = []

    ...

    UserDefaults.standard.set(try? PropertyListEncoder().encode(pointsPlane), forKey:"pointsPlane")

Class 'PropertyListEncoder' requires that 'ViewControllerPlane.pointDict' conform to 'Encodable'

错误明确说明您必须符合
pointDict
可编码的
。那就这么做吧

struct PointDict: Encodable { // also make struct model name's first letter uppercased.
    let id: Int
    let name: String
    let type: Int8
}
另外,不要使用
try?
,使用
dotry-catch
并处理抛出的错误

do {
    UserDefaults.standard.set(try PropertyListEncoder().encode(pointsPlane), forKey:"pointsPlane")
} catch { print(error) }

符合可编码状态,如错误状态。您已经找到了解决方案。除此之外,在声明类或结构时应该使用camel case。