Извините за перевод (очень плохой английский)
Вот JSON с сервера. Вам нужно написать все в классе, учебник не помог
{
"status": "string",
"exercises": [
{
"id": 0,
"uuid": "string",
"name_ru": "string",
"name_en": "string",
"body_part": {
"id": 0,
"uuid": "string",
"name_ru": "string",
"name_en": "string"
},
"equipment": {
"id": 0,
"uuid": "string",
"name_ru": "string",
"name_en": "string"
},
"kind": {
"id": 0,
"uuid": "string",
"name_ru": "string",
"name_en": "string"
}
}
]
}
Этонеобходимо реализовать упражнения в новом формате (с добавленным полем UUID).В каждое упражнение с сервера поступают следующие данные: упражнения для групп мышц, тип упражнений, оборудование.Каждый из этих объектов должен храниться локально в базе данных Realm, и проверка существования всегда должна выполняться с использованием ключа uuid.Если такая сущность существует, проверьте ее основные параметры, чтобы обновить ее, в случае изменения важных свойств (например, name (nameRu))
import RealmSwift
import Foundation
@objcMembers class RealmExercise: Object {
let id = RealmOptional<Int>()
dynamic var uuid = ""
dynamic var nameRu = ""
dynamic var nameEn = ""
dynamic var kind: [Kind]?
dynamic var bodyPart: [BodyPart]?
dynamic var equipment: [Equipment]?
convenience init(nameRu: String, id: Int?, nameEn: String, uuid: String) {
self.init()
self.nameRu = nameRu
self.id.value = id
self.nameEn = nameEn
self.uuid = uuid
}
func idString() -> String? {
guard let id = id.value else { return nil }
return String(id)
}
func create<T: Object>(_ object: T) {
do {
try realm?.write {
realm?.add(object)
}
} catch {
print("error create object")
}
}
}
@objcMembers class Kind: Object {
dynamic var nameRu: String? = ""
dynamic var nameEn: String? = ""
let id = RealmOptional<Int>()
dynamic var uuid = ""
let exercise = List<RealmExercise>()
convenience init(nameRu: String?, id: Int?, nameEn: String?, uuid: String) {
self.init()
self.nameRu = nameRu
self.id.value = id
self.nameEn = nameEn
self.uuid = uuid
}
func idString() -> String? {
guard let id = id.value else { return nil }
return String(id)
}
public func saveOrUpdate() {
let realm = try! Realm()
try! realm.write() {
realm.add(self, update: true)
}
}
}
@objcMembers class BodyPart: Object {
dynamic var nameRu: String? = ""
dynamic var nameEn: String? = ""
let id = RealmOptional<Int>()
dynamic var uuid = ""
let exercise = List<RealmExercise>()
convenience init(nameRu: String?, id: Int?, nameEn: String?, uuid: String) {
self.init()
self.nameRu = nameRu
self.id.value = id
self.nameEn = nameEn
self.uuid = uuid
}
func idString() -> String? {
guard let id = id.value else { return nil }
return String(id)
}
public func saveOrUpdate() {
let realm = try! Realm()
try! realm.write() {
realm.add(self, update: true)
}
}
}
@objcMembers class Equipment: Object {
dynamic var nameRu: String? = ""
dynamic var nameEn: String? = ""
let id = RealmOptional<Int>()
dynamic var uuid = ""
let exercise = List<RealmExercise>()
convenience init(nameRu: String?, id: Int?, nameEn: String?, uuid: String) {
self.init()
self.nameRu = nameRu
self.id.value = id
self.nameEn = nameEn
self.uuid = uuid
}
func idString() -> String? {
guard let id = id.value else { return nil }
return String(id)
}
public func saveOrUpdate() {
let realm = try! Realm()
try! realm.write() {
realm.add(self, update: true)
}
}
}
VievController
var exercise: Results<RealmExercise>!
let users = JSON.object(forKey: "exercises") as! [NSDictionary]
let realm = try! Realm()
users.forEach { userJSON in
let saveExercise = RealmExercise.init(nameRu: userJSON.object(forKey: "name_ru") as! String, id: userJSON.object(forKey: "id") as? Int, nameEn: userJSON.object(forKey: "name_en") as! String, uuid: userJSON.object(forKey: "uuid") as! String)
exercise = realm.objects(RealmExercise.self)