How to archive and unarchive custom objects in Swift? Or how to save custom object to NSUserDefaults in Swift?

后端 未结 5 1242
梦毁少年i
梦毁少年i 2020-12-10 02:46

I have a class

class Player {

    var name = \"\"

    func encodeWithCoder(encoder: NSCoder) {
        encoder.encodeObject(name)
    }

    func initWith         


        
5条回答
  •  自闭症患者
    2020-12-10 03:10

    With codable new ios 11 protocol you can now let your class implements it and archive/unarchive objects of it with JSONEncoder and JSONDecoder

    struct Language: Codable {
        var name: String
        var version: Int
    }
    
    let swift = Language(name: "Swift", version: 4)
    let encoder = JSONEncoder()
    if let encoded = try? encoder.encode(swift) {
        // save `encoded` somewhere
    }
    
    if let encoded = try? encoder.encode(swift) {
    if let json = String(data: encoded, encoding: .utf8) {
        print(json)
    }
    
    let decoder = JSONDecoder()
    if let decoded = try? decoder.decode(Language.self, from: encoded) {
        print(decoded.name)
    }
    

提交回复
热议问题