diff --git a/Classes/NSManagedObject+ActiveRecord.h b/Classes/NSManagedObject+ActiveRecord.h index c04f299..61e6d36 100644 --- a/Classes/NSManagedObject+ActiveRecord.h +++ b/Classes/NSManagedObject+ActiveRecord.h @@ -47,4 +47,8 @@ + (NSString *)entityName; +#pragma mark - Date Formatting + ++ (void)setDateFormat:(NSString *)dateFormat; + @end diff --git a/Classes/NSManagedObject+ActiveRecord.m b/Classes/NSManagedObject+ActiveRecord.m index 12d1ab1..8d0e01e 100644 --- a/Classes/NSManagedObject+ActiveRecord.m +++ b/Classes/NSManagedObject+ActiveRecord.m @@ -219,7 +219,7 @@ - (void)setSafeValue:(id)value forKey:(id)key { value = [NSNumber numberWithDouble:[value doubleValue]]; else if (attributeType == NSDateAttributeType) - value = [self.defaultFormatter dateFromString:value]; + value = [self.dateFormatter dateFromString:value]; } [self setValue:value forKey:key]; @@ -234,15 +234,25 @@ - (BOOL)isIntegerAttributeType:(NSAttributeType)attributeType { #pragma mark - Date Formatting -- (NSDateFormatter *)defaultFormatter { - static NSDateFormatter *sharedFormatter; - static dispatch_once_t singletonToken; +static NSDateFormatter *sharedFormatter; +static dispatch_once_t singletonToken; + ++(NSDateFormatter *)sharedFormatter{ dispatch_once(&singletonToken, ^{ - sharedFormatter = [[NSDateFormatter alloc] init]; - [sharedFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"]; + if(!sharedFormatter){ + sharedFormatter = [[NSDateFormatter alloc] init]; + [sharedFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"]; + } }); - return sharedFormatter; } +- (NSDateFormatter *)dateFormatter { + return [NSManagedObject sharedFormatter]; +} + ++ (void)setDateFormat:(NSString *)dateFormat { + [[NSManagedObject sharedFormatter] setDateFormat:dateFormat]; +} + @end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 2f90c60..0313ddf 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,6 +1,6 @@ PODS: - Kiwi (2.1) - - ObjectiveRecord (1.3.1): + - ObjectiveRecord (1.4.0): - ObjectiveSugar - ObjectiveSugar (0.8) @@ -15,7 +15,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Kiwi: 054ef97d0e50c279b21113a0880a906fa153a7fd - ObjectiveRecord: 3a196d1c853a315919951905babdb073df915cd6 + ObjectiveRecord: 109a6c583284c2c9af1dc0d6ccc1dfc84e826c45 ObjectiveSugar: 101df0252a4a9b7eab2e20bf1cd444bfaec2a02b COCOAPODS: 0.26.2 diff --git a/Example/SampleProjectTests/FindersAndCreatorsTests.m b/Example/SampleProjectTests/FindersAndCreatorsTests.m index 312f3cc..6d7fcc8 100644 --- a/Example/SampleProjectTests/FindersAndCreatorsTests.m +++ b/Example/SampleProjectTests/FindersAndCreatorsTests.m @@ -176,6 +176,18 @@ void createSomePeople(NSArray *names, NSArray *surnames, NSManagedObjectContext Person *person = [Person create:@{ @"anniversary": [formatta stringFromDate:date] }]; [[@([date timeIntervalSinceDate:person.anniversary]) should] beLessThan:@1]; }); + + it(@"converts string from specified date format", ^{ + [NSManagedObject setFormatter:@"HH:mm:ss"]; + Person *person = [Person create:@{ @"anniversary": @"12:24:05" }]; + [person.anniversary shouldNotBeNil]; + }); + + it(@"can't convert string from specified date format", ^{ + [NSManagedObject setFormatter:@"yyyy HH:mm:ss"]; + Person *person = [Person create:@{ @"anniversary": @"12:24:05" }]; + [person.anniversary shouldBeNil]; + }); it(@"doesn't update with nulls", ^{ Person *person = fetchUniquePerson();