RealmMapper 3.0

RealmMapper 3.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布Dec 2017
SwiftSwift 版本3.1
SPM支持 SPM

DaoNVDai Ho V. 维护。



 
依赖项
RealmSwift~> 3.0
ObjectMapper~> 2.2
 

  • 作者
  • Dao Nguyen

Realm + ObjectMapper

要求

  • iOS 8.0+
  • Xcode 8.3 (Swift 3.1)

安装

嵌入式框架需要最低部署目标为iOS 8

使用

映射

规则

  • 具有 primaryKey 的对象必须是 StaticMappable (i)
  • 没有 primaryKey 的对象应该是 Mappable (ii)
import RealmSwift
import ObjectMapper
import RealmMapper

final class User: Object, StaticMappable {
    dynamic var id: String!
    dynamic var name: String?
    dynamic var address: Address?
    let dogs = List<Dog>()
    
    override class func primaryKey() -> String? {
        return "id"
    }
    
    func mapping(map: Map) {
        name <- map["name"]
        address <- map["address"]
        dogs <- map["dogs"]
    }
      
    static func objectForMapping(map: Map) -> BaseMappable? {
        do {
            let realm = try Realm()
            return realm.object(ofType: self, forMapping: map)
        } catch {
            return nil
        }
    }
}

// (ii)
final class Address: Object, Mappable {
    dynamic var street = ""
    dynamic var city = ""
    dynamic var country = ""

    dynamic var phone: Phone?

    let users = LinkingObjects(fromType: User.self, property: "address")

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

    func mapping(map: Map) {
        street <- map["street"]
        city <- map["city"]
        country <- map["country"]
        phone <- map["phone"]
    }
}

将 JSON 导入到 Realm

do {
  let realm = try Realm()
  try realm.write {
    realm.map(User.self, json: jsUser) // map JSON object
    realm.map(Shop.self, json: jsShops) // map JSON array
  }
} catch {
}

null 值将被跳过,如果您想设置 null,请使用 NSNull() 代替