У меня есть класс моделей, определенный следующим образом:
class BaseModel: Object {
var data: JSON = JSON.null
convenience init(_ data: JSON) {
self.init()
self.data = data
}
override static func ignoredProperties() -> [String] {
return ["data"]
}
}
class RecipeModel: BaseModel {
dynamic var title: String {
get { return data["fields"]["title"].stringValue }
set { self.title = newValue }
}
... more vars ...
var ingredients: List<IngredientsModel> {
get {
let ingredients = List<IngredientsModel>()
for item in data["fields"]["ingredients"] {
ingredients.append(IngredientsModel(item.1))
}
return ingredients
}
set { self.ingredients = newValue }
}
}
class IngredientsModel: BaseModel {
dynamic var text: String {
get { return data["text"].stringValue }
set { self.text = newValue }
}
... more vars ...
}
И я хотел бы использовать его примерно так:
Api.shared.fetchAllEntries().call(onSuccess: {response in
print(response.json)
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
}
for item in response.json["items"].arrayValue {
let recipe = RecipeModel(item)
try! realm.write {
realm.add(recipe)
}
}
}, onError: {
print("error")
})
Итак, в основном идея состоит в том, чтобы просто передать весь JSON начальному классу RecipeModel
, и он должен разобрать его и создать нужные мне объекты в базе данных Realm. Он работает довольно хорошо, за исключением вложенного списка IngredientsModel
. Они не добавляются в базу данных области.
Что я вижу как потенциальную проблему, так это то, что я вызываю self.init()
до вызова self.data
в convenience init
, но я не вижу никакого способа обойти это. Ребята, подскажите, пожалуйста, как мне добиться того, чтобы в IngredientsModel
было правильно настроено содержимое, и у меня был список ингредиентов в RecipeModel
?
ObjectMapper
и посмотрю, что из этого получится. 04.09.2017