Кодировать и декодировать класс в ios - PullRequest
0 голосов
/ 16 мая 2019

У меня есть класс

class Event{
  var name:String = "";
  var attributes:[String:Any] = [:];
  var lineItems:[LineItem] = [];
}

class LineItem {
  var itemName:String = "";
  var details:[String:Any] = [:];
}

Я хочу преобразовать его в строку json и строку json обратно в модель.

Я пытаюсь

var test = Event()
    test.name = "jogi"
    var dictionary = Dictionary<String,Any>();
    dictionary.updateValue("shoes", forKey: "item")
    dictionary.updateValue(345, forKey: "amount")
    test.attributes = dictionary


    let json = JSON(test)

Но выдает ошибку неподдерживаемого типа, поскольку swiftyjson поддерживает только rawArray, rawDictionary, rawString, rawNumber, rawNull, rawBool.

1 Ответ

2 голосов
/ 16 мая 2019

Вы можете заставить свой класс соответствовать Codable протоколу

class Event: Codable {
  var name:String = "";
  var attributes:[String:Any] = [:];
  var lineItems:[LineItem] = [];
}

Затем для кодирования вашей модели используйте:

try? JSONEncoder().encode(event)

Для декодирования вашей модели используйте

try? JSONDecoder().decode(Event.self, from: eventData)
...