0

这是对我之前的一个问题的跟进。我需要types在 ObjectMapper 的帮助下在我的 Realm 数据库中映射一个数组,该数组仅包含 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)
}

我的 ClassgetType()是一个对象:

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 次后端调用之后,这将导致严重的问题。有谁知道我应该怎么做?

4

1 回答 1

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)
}
于 2016-05-16T05:52:02.347 回答