Realm 和 Objectmapper:对于每个请求,一个项目的数组不断堆叠在我的 Realm 数据库中
Realm and Objectmapper: Array of one item keeps stacking in my Realm database for every request
这是我的 之一的跟进。在 ObjectMapper 的帮助下,我需要在我的 Realm 数据库中映射一个数组 types
,它只包含 1 个单词(有时是两个单词)。
这是JSON:
{
"result": [
{
"id": 20,
"types": [
"now"
],
"url": "/nl/whereto/ezrhgerigerg"
},
我得到了以下解决方法,部分有效:
func mapping(map: Map) {
...
var typez: [String]? = nil
typez <- map["types"]
typez?.forEach { t in
let obj = getType()
obj.text = t
self.typez.append(obj)
}
而我的 getType()
的 Class 是一个对象:
class getType: Object, Mappable {
dynamic var text: String?
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
text <- map[""]
}
}
我遇到的问题是,每次我调用后端时,数据库都不会按类型更新数据(或删除它们,并获取新数据),它只是不断堆积起来!这使我的 getType 数据库在一些调用后有 280 多行,而它只存在于 10 个对象中。
x 次后端调用后,这将导致严重的问题。有谁知道我应该怎么做?
我认为您可能使用主键更新了 Publication
对象。不幸的是,getType
对象没有主键。不能用主键自动更新。
因此如果发布对象已经存在,您可以手动删除typez
属性。像下面这样:
let publication = Mapper<Publication>().map(json)
// ...
try! realm.write {
// Check whether the Publication object already exists
let key = ... // Primary key value (e.g. 20)
if let publication = realm.objectForPrimaryKey(Publication.self, key: key) {
// If it already exists, delete `typez` objects
realm.delete(publication.typez)
}
realm.add(publication, update: true)
}
这是我的 types
,它只包含 1 个单词(有时是两个单词)。
这是JSON:
{
"result": [
{
"id": 20,
"types": [
"now"
],
"url": "/nl/whereto/ezrhgerigerg"
},
我得到了以下解决方法,部分有效:
func mapping(map: Map) {
...
var typez: [String]? = nil
typez <- map["types"]
typez?.forEach { t in
let obj = getType()
obj.text = t
self.typez.append(obj)
}
而我的 getType()
的 Class 是一个对象:
class getType: Object, Mappable {
dynamic var text: String?
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
text <- map[""]
}
}
我遇到的问题是,每次我调用后端时,数据库都不会按类型更新数据(或删除它们,并获取新数据),它只是不断堆积起来!这使我的 getType 数据库在一些调用后有 280 多行,而它只存在于 10 个对象中。
x 次后端调用后,这将导致严重的问题。有谁知道我应该怎么做?
我认为您可能使用主键更新了 Publication
对象。不幸的是,getType
对象没有主键。不能用主键自动更新。
因此如果发布对象已经存在,您可以手动删除typez
属性。像下面这样:
let publication = Mapper<Publication>().map(json)
// ...
try! realm.write {
// Check whether the Publication object already exists
let key = ... // Primary key value (e.g. 20)
if let publication = realm.objectForPrimaryKey(Publication.self, key: key) {
// If it already exists, delete `typez` objects
realm.delete(publication.typez)
}
realm.add(publication, update: true)
}