Skip to content

Releases: lucasmedeirosleite/EasyMapping

0.24.0

09 Aug 22:15
Compare
Choose a tag to compare

Added

  • Support for Xcode 12.
  • Support for Swift Package Manager in Xcode 11 and Xcode 12

Changed

  • Requires iOS 9 and higher to support Xcode 12
  • EKSerializer now uses serializeCollection:withRelationship: method under the hood instead of serializeCollection:withMapping: to support custom serialization resolvers for collection of objects (thanks, @armandzwan)

Deprecated

  • EKSerializer.serializeCollection:withMapping in favor of EKSerializer.serializeCollection:withRelationship. This allows to support custom serialization resolvers when serializing collections. Similar deprecation applied to serializeCollection:withMapping:fromContext:.

0.23.0

22 Jun 13:06
Compare
Choose a tag to compare

Changed

  • Has many relationships now correctly recognize nested custom mappings during serialization (thanks, @armandzwan)

0.22.1

18 Jul 11:40
Compare
Choose a tag to compare
  • Added support for recognizing structs as native types, for example CLLocationCoordinate2D - #168(thanks, @sebastianludwig)

0.22.0

04 May 17:59
Compare
Choose a tag to compare
  • Removed too strict generic constraints from EKMapper and EKManagedObjectMapper classes.

0.21.2

29 Jun 13:57
Compare
Choose a tag to compare
  • EKSerializer no longer implies that serializable objects need to conform to EKMappingProtocol or EKManagedMappingProtocol.

0.21.1

07 May 17:54
Compare
Choose a tag to compare
  • Fixed a bug in EKSerializer that prevented has one relationships from being properly serialized with non-nested keypaths.

0.21.0

04 May 12:12
Compare
Choose a tag to compare
  • Fixed potential buffer overflow when using scalar Objective-C properties(#155, #156).
  • Added support for installation using Carthage and Swift Package Manager.
  • ignoreMissingFields property now properly differentiates between a truly missing from JSON field and field, that contains null, which is turned into NSNull.null instance by NSJSONSerialization.
  • mapKeyPath:toPoperty:withDateFormatter method now creates blocks, that return nil instead of NSNull if received value is not a NSString or NSDate. NSNull instance however is left untouched.

0.20.1

12 Feb 18:35
Compare
Choose a tag to compare
  • Added ability to ignore field during serialization - #148(thanks, @vladimirbebeshko)
  • Improved types of arrays - #145(thanks, @Uncommon)
  • EKRelationshipMapping has been made public for iOS target - #147(thanks, @dvs15)
  • Fixed Xcode 8.3 warning in imports.

0.20.0

06 Oct 14:15
Compare
Choose a tag to compare

This release requires iOS 8 / macOS 10.9 / tvOS 9.0 / watchOS 2.0 and higher.

New

  • API was annotated with lightweight Objective-c generics and nullability annotations to be better imported in Swift.
  • All relationship mappings, like hasOne:forKeyPath:, now return EKRelationshipMapping instead of void, and allow mapping customization via condition property.
  • It's now possible to switch mappings based on passed representation, like so:
EKRelationshipMapping * relationship = [mapping hasMany:Dog.class forKeyPath:@"animals" forProperty:@"pets"];
relationship.mappingResolver = ^EKObjectMapping *(id representation){
    if ([representation[@"type"] isEqualToString:@"dog"]) {
        return [Dog objectMapping];
    } else {
        return [Wolf objectMapping];
    }
};

Breaking API changes

  • EKObjectMapping hasOneMappings and hasManyMappings are now arrays instead of being dictionaries.
  • EKRelationshipMapping now has mappingResolver and serializationResolver properties instead of objectClass property of EKMappingProtocol type
  • NSDateFormatter extension with ek_dateFormatterForCurrentThread is removed.

0.18.1

07 Jul 13:41
Compare
Choose a tag to compare

Fixed

  • Crash, that happened when EKCoreDataImporter tried to import Swift NSManagedObject subclass, that did not have primaryKeyMapping, which led to calling valueForKeyPath method with nil.