Releases: lucasmedeirosleite/EasyMapping
Releases · lucasmedeirosleite/EasyMapping
0.24.0
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 usesserializeCollection:withRelationship:
method under the hood instead ofserializeCollection:withMapping:
to support custom serialization resolvers for collection of objects (thanks, @armandzwan)
Deprecated
EKSerializer.serializeCollection:withMapping
in favor ofEKSerializer.serializeCollection:withRelationship
. This allows to support custom serialization resolvers when serializing collections. Similar deprecation applied toserializeCollection:withMapping:fromContext:
.
0.23.0
Changed
- Has many relationships now correctly recognize nested custom mappings during serialization (thanks, @armandzwan)
0.22.1
- Added support for recognizing structs as native types, for example
CLLocationCoordinate2D
- #168(thanks, @sebastianludwig)
0.22.0
- Removed too strict generic constraints from
EKMapper
andEKManagedObjectMapper
classes.
0.21.2
EKSerializer
no longer implies that serializable objects need to conform toEKMappingProtocol
orEKManagedMappingProtocol
.
0.21.1
- Fixed a bug in
EKSerializer
that prevented has one relationships from being properly serialized with non-nested keypaths.
0.21.0
- 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 ofNSNull
if received value is not a NSString or NSDate.NSNull
instance however is left untouched.
0.20.1
0.20.0
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 returnEKRelationshipMapping
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
andhasManyMappings
are now arrays instead of being dictionaries.EKRelationshipMapping
now hasmappingResolver
andserializationResolver
properties instead ofobjectClass
property ofEKMappingProtocol
typeNSDateFormatter
extension withek_dateFormatterForCurrentThread
is removed.
0.18.1
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.