使用ObjectMapper不会将字符串数组保存到Realm对象

时间:2018-03-30 11:28:58

标签: ios swift realm objectmapper

这是我在imageurls

中声明Object的方式
var imageURLs = List<String>()

并解析:

func mapping(map: Map) {
    imageURLs <- map["image_urls"]
}

这就是我要解析的内容:

{ "image_urls": ["a"] }

最后,属性为空。为什么呢?

使用Realm 3.3这样的基元数组应该可以工作。

3 个答案:

答案 0 :(得分:1)

如果您正在使用Realm和ObjectMapper,那么有一个非常酷的选项,通过使用ObjectMapper+Realm,您可以将数组直接映射到域列表,如下所示:

func mapping(map: Map) {
    imageURLs <- (map["image_urls"], ListTransform<String>())
}

请注意,默认情况下,对象映射器无法将数组映射为域列表,这可以通过使用上述库来实现。

答案 1 :(得分:1)

您可以在函数中创建变量并将项目映射到数组:

func mapping(map: Map) {
   var pathes = [String]()
   pathes <- map["image_urls"]
   self.imageUrls.add(pathes)
}

或者您可以使用名为ObjectMapper+Realm的扩展程序,如上所述。

答案 2 :(得分:0)

您可以使用ObjectMapper如下所示映射String数组,这很好用:

import ObjectMapper
import RealmSwift
import ObjectMapper_Realm

public class Items: Object, Mappable {

var images = List<ListImages>()
@objc dynamic var id = 0

required convenience public init?(map : Map){
   self.init()
}

public override class func primaryKey() -> String? {
   return "id"
}

public func mapping(map: Map) {
var images: [String]? = nil
images <- map["image"]

images?.forEach { image in
    let value = ListImages()
    value.value = image
    self.images.append(value)
  }
}
}


class ListImages:Object{
    @objc dynamic var value: String = ""
}