Архивирование пользовательских объектов в Swift - Extended - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над приложением iOS на Swift 4.0.Приложение использует сторонний SDK, где есть модель, скажем,

class Customer: NSCopying, NSObject {

    var name: String!
    var age: Int!
    var address: Address!
}

. В этот момент у меня нет контроля над изменением каких-либо свойств и сигнатур модели в качестве ее внутреннего SDK.Но мне нужно сохранить объект в настройках диска / пользователя и загрузить при необходимости.

Возможно ли это?Если это так, то как я могу это сделать?

1 Ответ

0 голосов
/ 28 мая 2018

Одним из способов является использование SwiftyJSON для преобразования объекта модели в данные JSON:

extension Customer {
    func toJSON() -> JSON {
        return [
            "name": name
            "age": age
            "address": address.toJSON() // add a toJSON method the same way in an Address extension
        ]
    }

    static func fromJSON(_ json: JSON) -> Customer {
        let customer = Customer()
        customer.name = json["name"].string
        customer.age = json["age"].int
        customer.address = Address.fromJSON(json["address"]) // add a fromJSON method the same way
    }
}

Теперь вы можете сделать что-то вроде сохранения в UserDefaults

UserDefaults.standard.set(try! Customer().toJSON().rawData(), forKey: "my key")
let customer = Customer.fromJSON(JSON(data: UserDefaults.standard.data(forKey: "my key")!))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...