diff --git a/Source/PropertyMapper/NSManagedObject+PropertyMapperHelpers.m b/Source/PropertyMapper/NSManagedObject+PropertyMapperHelpers.m index f8961042..db79087d 100755 --- a/Source/PropertyMapper/NSManagedObject+PropertyMapperHelpers.m +++ b/Source/PropertyMapper/NSManagedObject+PropertyMapperHelpers.m @@ -249,9 +249,20 @@ - (id)valueForAttributeDescription:(NSAttributeDescription *)attributeDescriptio } else if (transformableAttribute) { NSValueTransformer *transformer = [NSValueTransformer valueTransformerForName:[attributeDescription valueTransformerName]]; if (transformer) { - id newValue = [transformer transformedValue:remoteValue]; - if (newValue) { - value = newValue; + // NSSecureUnarchiveFromDataTransformer requires the value to be + // of NSData class, anything else would result in a crash. + if ([transformer isKindOfClass:[NSSecureUnarchiveFromDataTransformer class]]) { + if ([remoteValue isKindOfClass:[NSData class]]) { + id newValue = [transformer transformedValue:remoteValue]; + if (newValue) { + value = newValue; + } + } + } else { + id newValue = [transformer transformedValue:remoteValue]; + if (newValue) { + value = newValue; + } } } } diff --git a/Tests/PropertyMapper/Models/Model.xcdatamodeld/Model.xcdatamodel/contents b/Tests/PropertyMapper/Models/Model.xcdatamodeld/Model.xcdatamodel/contents index 1bacb966..a7738fe3 100644 --- a/Tests/PropertyMapper/Models/Model.xcdatamodeld/Model.xcdatamodel/contents +++ b/Tests/PropertyMapper/Models/Model.xcdatamodeld/Model.xcdatamodel/contents @@ -1,81 +1,81 @@ - + - - - + + + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - - + + + - + - + - + - + - + - + - - + + @@ -83,61 +83,61 @@ - - - - + + + + - - + + - - - + + + - - + + - + - - - - + + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - + @@ -147,6 +147,6 @@ - + \ No newline at end of file diff --git a/Tests/PropertyMapper/Models/Ordered.xcdatamodeld/Ordered.xcdatamodel/contents b/Tests/PropertyMapper/Models/Ordered.xcdatamodeld/Ordered.xcdatamodel/contents index ceb6aaf2..eacda3be 100644 --- a/Tests/PropertyMapper/Models/Ordered.xcdatamodeld/Ordered.xcdatamodel/contents +++ b/Tests/PropertyMapper/Models/Ordered.xcdatamodeld/Ordered.xcdatamodel/contents @@ -1,46 +1,46 @@ - + - - - - + + + + - + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - + + + + - + \ No newline at end of file diff --git a/Tests/PropertyMapper/SyncFillWithDictionaryTests.m b/Tests/PropertyMapper/SyncFillWithDictionaryTests.m index 87c6e739..c9dadfb9 100755 --- a/Tests/PropertyMapper/SyncFillWithDictionaryTests.m +++ b/Tests/PropertyMapper/SyncFillWithDictionaryTests.m @@ -143,7 +143,7 @@ - (void)testAllAttributes { }; [NSValueTransformer setValueTransformer:[[SyncTestValueTransformer alloc] init] forName:@"SyncTestValueTransformer"]; - + DataStack *dataStack = [self dataStack]; NSManagedObject *attributes = [self entityNamed:@"Attribute" inContext:dataStack.mainContext]; [attributes hyp_fillWithDictionary:values];