这是我previous questions之一的后续跟进。我需要在我的Realm数据库中映射数组types
,它在ObjectMapper的帮助下只包含1个单词(有时是2个单词)。
这是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 getType: Object, Mappable {
dynamic var text: String?
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
text <- map[""]
}
}
我遇到的问题是,每次我调用后端时,数据库都不会更新类型中的数据(或删除它们,并抓取新的数据),它只是不断堆积它!这使得我的getType数据库在一些调用之后成为280多行,而它只出现在10个对象中。
在x次后端调用之后,这将导致严重的问题。有谁知道我应该怎么做?
答案 0 :(得分:1)
我认为您可能使用主键更新了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)
}