【发布时间】:2018-06-04 07:36:04
【问题描述】:
对不起翻译(英语很糟糕)
这是来自服务器的 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 键执行存在性检查。如果有这样的实体,检查其基本参数进行更新,以防重要属性发生变化(例如,名称(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)
【问题讨论】:
-
那你有什么问题?什么错误等等,你到目前为止所尝试的代码在哪里。您应该花点时间阅读help center SO 不是用于课堂作业的代码编写服务。