Skip to content

An ObjectMapper extension that serializes arbitrary JSON into Realm's List class

License

Notifications You must be signed in to change notification settings

0xjmp/ObjectMapper-Realm

Repository files navigation

ObjectMapper+Realm

Version Build Status codecov Platform License

Installation Carthage compatible

ObjectMapper+Realm is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "ObjectMapper+Realm"

You may also install it through Swift Package Manager.

Usage

To use ListTransform just add it to the mapping of your RealmObject:

import ObjectMapper
import RealmSwift
import ObjectMapper_Realm

class User: Object, Mappable {
  dynamic var username: NSString?
  var friends: List<User>?

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

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

  func mapping(map: Map) {
    username              <- map["username"]
    friends               <- (map["friends"], ListTransform<User>())
  }
}

If you need to have control over your newly serialized objects, you can use the onSerialize callback:

class User: Object, Mappable {

    func mapping(map: Map) {
        username              <- map["username"]
        friends               <- (map["friends"], ListTransform<User>(onSerialize: onSerialize))
    }

    private func onSerialize(users: List<User>) {
        let realm = Storage.shared.realm
        try! realm.write {
            realm.add(users, update: .modified)
        }
    }
}

Have fun! 🎬

Author

Jake Peterson

License

ObjectMapper+Realm is available under the MIT license. See the LICENSE file for more info.

About

An ObjectMapper extension that serializes arbitrary JSON into Realm's List class

Resources

License

Stars

Watchers

Forks

Packages

No packages published