From b10c725beb1c12ed349a90a91331c53b4c310ad9 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 19 Sep 2014 17:40:11 +0800 Subject: [PATCH 01/14] fix iPhone error (NSMergeConflict for NSManagedObject) --- Nimble/Categories/NimbleStore+Savers.h | 2 + Nimble/Categories/NimbleStore+Savers.m | 129 +++++++++++------- Nimble/Main Store/NimbleStore.h | 10 ++ Nimble/Main Store/NimbleStore.m | 8 ++ .../xcshareddata/NimbleDemo.xccheckout | 16 ++- .../UserInterfaceState.xcuserstate | Bin 0 -> 10222 bytes .../xcschemes/NimbleDemo.xcscheme | 96 +++++++++++++ .../xcschemes/xcschememanagement.plist | 27 ++++ 8 files changed, 229 insertions(+), 59 deletions(-) create mode 100644 NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/NimbleDemo.xcscheme create mode 100644 NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Nimble/Categories/NimbleStore+Savers.h b/Nimble/Categories/NimbleStore+Savers.h index 9667053..ef86094 100644 --- a/Nimble/Categories/NimbleStore+Savers.h +++ b/Nimble/Categories/NimbleStore+Savers.h @@ -45,4 +45,6 @@ */ + (void)nb_saveInBackground:(NimbleSimpleBlock)changes completion:(NimbleErrorBlock)completion; ++ (void)nb_saveInBackground:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy completion:(NimbleErrorBlock)completion; + @end \ No newline at end of file diff --git a/Nimble/Categories/NimbleStore+Savers.m b/Nimble/Categories/NimbleStore+Savers.m index bb93fc1..c04f2cc 100644 --- a/Nimble/Categories/NimbleStore+Savers.m +++ b/Nimble/Categories/NimbleStore+Savers.m @@ -29,43 +29,62 @@ @implementation NimbleStore (Savers) + (void)nb_saveInMain:(NimbleSimpleBlock)changes { - NSParameterAssert(changes); - - NSManagedObjectContext *context = [NSManagedObjectContext nb_mainContext]; - - [context performBlock:^{ - - changes(NBMainContext); - - NSError *error; - [context save:&error]; - - if (error) { - NBLog(@"Error saving main context: %@", error); - } + [self nb_saveInMain:changes withMergePolicy:NSErrorMergePolicyType]; +} - }]; ++ (void)nb_saveInMain:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy +{ + NSParameterAssert(changes); + + NSManagedObjectContext *context = [NSManagedObjectContext nb_mainContext]; + + [context performBlock:^{ + NSMergePolicy *originalMergePolicy = context.mergePolicy; + context.mergePolicy = NSOverwriteMergePolicy; + + changes(NBMainContext); + + NSError *error; + [context save:&error]; + + context.mergePolicy = originalMergePolicy; + if (error) { + NBLog(@"Error saving main context: %@", error); + } + + }]; } + (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes { - NSParameterAssert(changes); - - NSManagedObjectContext *context = [NSManagedObjectContext nb_mainContext]; - - [context performBlockAndWait:^{ - - changes(NBMainContext); + [self nb_saveInMainWaiting:changes withMergePolicy:NSErrorMergePolicyType]; +} - NSError *error; - [context save:&error]; ++ (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy +{ + NSParameterAssert(changes); + + NSManagedObjectContext *context = [NSManagedObjectContext nb_mainContext]; + + [context performBlockAndWait:^{ + + NSMergePolicy *originalMergePolicy = context.mergePolicy; + context.mergePolicy = NSOverwriteMergePolicy; + + changes(NBMainContext); + + NSError *error; + [context save:&error]; + + context.mergePolicy = originalMergePolicy; + if (error) { + NBLog(@"Error saving main context: %@", error); + } + + }]; +} - if (error) { - NBLog(@"Error saving main context: %@", error); - } - }]; -} + (void)nb_saveInBackground:(NimbleSimpleBlock)changes { @@ -74,30 +93,36 @@ + (void)nb_saveInBackground:(NimbleSimpleBlock)changes + (void)nb_saveInBackground:(NimbleSimpleBlock)changes completion:(NimbleErrorBlock)completion { - NSParameterAssert(changes); - - NSManagedObjectContext *backgroundContext = [NSManagedObjectContext nb_backgroundContext]; - - [backgroundContext performBlock:^{ - - changes(NBBackgroundContext); - - NSError *error; - [backgroundContext save:&error]; - - if (error) { - NBLog(@"Error saving background context: %@", error); - } - - if (completion) { - dispatch_async(dispatch_get_main_queue(), ^{ - completion(nil); - }); - } - - }]; - + [self nb_saveInBackground:changes withMergePolicy:NSErrorMergePolicyType completion:completion]; } ++ (void)nb_saveInBackground:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy completion:(NimbleErrorBlock)completion { + NSParameterAssert(changes); + + NSManagedObjectContext *backgroundContext = [NSManagedObjectContext nb_backgroundContext]; + + [backgroundContext performBlock:^{ + + NSMergePolicy *originalMergePolicy = backgroundContext.mergePolicy; + backgroundContext.mergePolicy = mergePolicy; + + changes(NBBackgroundContext); + + NSError *error; + [backgroundContext save:&error]; + + backgroundContext.mergePolicy = originalMergePolicy; + if (error) { + NBLog(@"Error saving background context: %@", error); + } + + if (completion) { + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil); + }); + } + + }]; +} @end \ No newline at end of file diff --git a/Nimble/Main Store/NimbleStore.h b/Nimble/Main Store/NimbleStore.h index 8039e19..3bdf790 100644 --- a/Nimble/Main Store/NimbleStore.h +++ b/Nimble/Main Store/NimbleStore.h @@ -67,6 +67,16 @@ typedef void (^NimbleErrorBlock)(NSError *error); */ + (BOOL)nb_setupStore:(NSError **)error; + +/** + * Setup a autoMigrating store with the default filename + * + * @param error + * + * @return setup status + */ ++ (BOOL)nb_setupAutoMigratingSqliteStore:(NSError **)error; + /** Setup a store with a custom filename */ diff --git a/Nimble/Main Store/NimbleStore.m b/Nimble/Main Store/NimbleStore.m index ebf5643..d73e629 100644 --- a/Nimble/Main Store/NimbleStore.m +++ b/Nimble/Main Store/NimbleStore.m @@ -53,6 +53,14 @@ + (BOOL)nb_setupStore:(NSError **)error return [self nb_setupStoreWithFilename:[self.class nb_defaultStoreName] error:error]; } ++ (BOOL)nb_setupAutoMigratingSqliteStore:(NSError **)error +{ + NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, + [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; + return [self nb_setupStoreWithName:[self.class nb_defaultStoreName] storeType:NSSQLiteStoreType options:options error:error]; +} + + (BOOL)nb_setupStoreWithFilename:(NSString *)filename error:(NSError **)error { NSParameterAssert(filename); diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcshareddata/NimbleDemo.xccheckout b/NimbleDemo.xcodeproj/project.xcworkspace/xcshareddata/NimbleDemo.xccheckout index 02b9981..d900ef9 100644 --- a/NimbleDemo.xcodeproj/project.xcworkspace/xcshareddata/NimbleDemo.xccheckout +++ b/NimbleDemo.xcodeproj/project.xcworkspace/xcshareddata/NimbleDemo.xccheckout @@ -2,35 +2,37 @@ + IDESourceControlProjectFavoriteDictionaryKey + IDESourceControlProjectIdentifier - DB398F12-C64F-4246-A5E1-C0092C32F193 + 83E05706-1C71-40B6-9C58-5C9CBE62AEEE IDESourceControlProjectName NimbleDemo IDESourceControlProjectOriginsDictionary - 29CB7ABD-0461-41C6-803C-14162FDA686B - ssh://bitbucket.org/marcosero/nimble.git + D774E5F0-7D41-4628-AEC0-CE3CDEB9096A + https://github.com/xhzengAIB/Nimble.git IDESourceControlProjectPath NimbleDemo.xcodeproj/project.xcworkspace IDESourceControlProjectRelativeInstallPathDictionary - 29CB7ABD-0461-41C6-803C-14162FDA686B + D774E5F0-7D41-4628-AEC0-CE3CDEB9096A ../.. IDESourceControlProjectURL - ssh://bitbucket.org/marcosero/nimble.git + https://github.com/xhzengAIB/Nimble.git IDESourceControlProjectVersion 110 IDESourceControlProjectWCCIdentifier - 29CB7ABD-0461-41C6-803C-14162FDA686B + D774E5F0-7D41-4628-AEC0-CE3CDEB9096A IDESourceControlProjectWCConfigurations IDESourceControlRepositoryExtensionIdentifierKey public.vcs.git IDESourceControlWCCIdentifierKey - 29CB7ABD-0461-41C6-803C-14162FDA686B + D774E5F0-7D41-4628-AEC0-CE3CDEB9096A IDESourceControlWCCName Nimble diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..be614a3badcea39e809ce15d49f7d98ec169de2c GIT binary patch literal 10222 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 Dq6@UP literal 0 HcmV?d00001 diff --git a/NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/NimbleDemo.xcscheme b/NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/NimbleDemo.xcscheme new file mode 100644 index 0000000..f42578f --- /dev/null +++ b/NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/NimbleDemo.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/xcschememanagement.plist b/NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..66afade --- /dev/null +++ b/NimbleDemo.xcodeproj/xcuserdata/dw_ios.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + NimbleDemo.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + A9040B5A178E0ECC00CCE8EF + + primary + + + A9541F181793572A008D92FC + + primary + + + + + From 6544dbf8cf7a909aea348ae5a88e685e4a79a83c Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 10:35:18 +0800 Subject: [PATCH 02/14] publish api method --- Nimble/Categories/NimbleStore+Savers.h | 2 ++ .../UserInterfaceState.xcuserstate | Bin 10222 -> 10782 bytes 2 files changed, 2 insertions(+) diff --git a/Nimble/Categories/NimbleStore+Savers.h b/Nimble/Categories/NimbleStore+Savers.h index ef86094..2a9a7fc 100644 --- a/Nimble/Categories/NimbleStore+Savers.h +++ b/Nimble/Categories/NimbleStore+Savers.h @@ -30,6 +30,8 @@ + (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes; ++ (void)nb_saveInMain:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy; + /** * Perform all the changes in a background queue and then merge everything into the main context diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate index be614a3badcea39e809ce15d49f7d98ec169de2c..a3eaee388ce411ea1a359fa2c7f786ea1435abcf 100644 GIT binary patch delta 6218 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 literal 10222 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 Dq6@UP From f3295f691aa409f3f0458c77d4c907c3d1561083 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 10:36:09 +0800 Subject: [PATCH 03/14] Update Nimble.podspec --- Nimble.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nimble.podspec b/Nimble.podspec index f0b2c6c..a95115e 100644 --- a/Nimble.podspec +++ b/Nimble.podspec @@ -5,7 +5,7 @@ Pod::Spec.new do |s| s.homepage = "http://github.com/marcosero/Nimble" s.license = 'MIT' s.author = { "Marco Sero" => "marco@marcosero.com" } - s.source = { :git => "http://github.com/marcosero/Nimble", :tag => "0.0.1" } + s.source = { :git => "http://github.com/xhzengAIB/Nimble", :tag => "1.0" } s.platform = :ios, '6.0' s.source_files = 'Nimble' s.framework = 'CoreData' From 25a7cf4d37e1b718e4c5d669ae8e39592dafede1 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 10:44:47 +0800 Subject: [PATCH 04/14] Update Nimble.podspec --- Nimble.podspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Nimble.podspec b/Nimble.podspec index a95115e..c5008a0 100644 --- a/Nimble.podspec +++ b/Nimble.podspec @@ -1,11 +1,11 @@ Pod::Spec.new do |s| s.name = "Nimble" - s.version = "0.0.1" + s.version = "0.0.2" s.summary = "Core Data and iCloud made nimble and fast." s.homepage = "http://github.com/marcosero/Nimble" s.license = 'MIT' s.author = { "Marco Sero" => "marco@marcosero.com" } - s.source = { :git => "http://github.com/xhzengAIB/Nimble", :tag => "1.0" } + s.source = { :git => "http://github.com/xhzengAIB/Nimble", :tag => "0.0.2" } s.platform = :ios, '6.0' s.source_files = 'Nimble' s.framework = 'CoreData' From bb679260b63f9fc4d0ec63f5a3051c32b03da48a Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 10:50:51 +0800 Subject: [PATCH 05/14] Update Nimble.podspec --- Nimble.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nimble.podspec b/Nimble.podspec index c5008a0..7344e72 100644 --- a/Nimble.podspec +++ b/Nimble.podspec @@ -5,7 +5,7 @@ Pod::Spec.new do |s| s.homepage = "http://github.com/marcosero/Nimble" s.license = 'MIT' s.author = { "Marco Sero" => "marco@marcosero.com" } - s.source = { :git => "http://github.com/xhzengAIB/Nimble", :tag => "0.0.2" } + s.source = { :git => "http://github.com/xhzengAIB/Nimble"} s.platform = :ios, '6.0' s.source_files = 'Nimble' s.framework = 'CoreData' From 93c35cb76d65e3ddf91eb9f8c019ad7cb97c6a4f Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 11:01:25 +0800 Subject: [PATCH 06/14] Update Nimble.podspec --- Nimble.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nimble.podspec b/Nimble.podspec index 7344e72..675011c 100644 --- a/Nimble.podspec +++ b/Nimble.podspec @@ -7,7 +7,7 @@ Pod::Spec.new do |s| s.author = { "Marco Sero" => "marco@marcosero.com" } s.source = { :git => "http://github.com/xhzengAIB/Nimble"} s.platform = :ios, '6.0' - s.source_files = 'Nimble' + s.source_files = 'Nimble/*.{h,m},Nimble/**/*.{h,m}' s.framework = 'CoreData' s.requires_arc = true end From 3561257a59be7910eda47e01ef3315b1b7fd90ad Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 11:03:57 +0800 Subject: [PATCH 07/14] Update Nimble.podspec --- Nimble.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nimble.podspec b/Nimble.podspec index 675011c..0674408 100644 --- a/Nimble.podspec +++ b/Nimble.podspec @@ -7,7 +7,7 @@ Pod::Spec.new do |s| s.author = { "Marco Sero" => "marco@marcosero.com" } s.source = { :git => "http://github.com/xhzengAIB/Nimble"} s.platform = :ios, '6.0' - s.source_files = 'Nimble/*.{h,m},Nimble/**/*.{h,m}' + s.source_files = 'Nimble/*.{h,m}','Nimble/**/*.{h,m}' s.framework = 'CoreData' s.requires_arc = true end From 86b8bbeac824e4dcc802d00be27611615e4e0016 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 11:09:39 +0800 Subject: [PATCH 08/14] Update Nimble.podspec --- Nimble.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nimble.podspec b/Nimble.podspec index 0674408..6e0138a 100644 --- a/Nimble.podspec +++ b/Nimble.podspec @@ -5,7 +5,7 @@ Pod::Spec.new do |s| s.homepage = "http://github.com/marcosero/Nimble" s.license = 'MIT' s.author = { "Marco Sero" => "marco@marcosero.com" } - s.source = { :git => "http://github.com/xhzengAIB/Nimble"} + s.source = { :git => "https://github.com/xhzengAIB/Nimble.git"} s.platform = :ios, '6.0' s.source_files = 'Nimble/*.{h,m}','Nimble/**/*.{h,m}' s.framework = 'CoreData' From 7a92030d41f299f0fc5337541b6a1197ab4d14db Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 11:15:31 +0800 Subject: [PATCH 09/14] fix CoreData import error --- Nimble/Main Store/NimbleStore.h | 1 + .../UserInterfaceState.xcuserstate | Bin 10782 -> 10448 bytes 2 files changed, 1 insertion(+) diff --git a/Nimble/Main Store/NimbleStore.h b/Nimble/Main Store/NimbleStore.h index 3bdf790..962b9da 100644 --- a/Nimble/Main Store/NimbleStore.h +++ b/Nimble/Main Store/NimbleStore.h @@ -22,6 +22,7 @@ #import +#import #define NBLog(...) NSLog(@"Nimble >> %s\n\t%@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__]) diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate index a3eaee388ce411ea1a359fa2c7f786ea1435abcf..1c0eb20a4d9f01b2c42abf0413b6e3b852370130 100644 GIT binary patch delta 4463 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 U7%+ZG$}c*W5gv{nJ!5wN57Ez9oB#j- delta 4631 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 Date: Mon, 22 Sep 2014 11:21:42 +0800 Subject: [PATCH 10/14] fix the property error --- Nimble/Categories/NimbleStore+Savers.m | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 10448 -> 10811 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Nimble/Categories/NimbleStore+Savers.m b/Nimble/Categories/NimbleStore+Savers.m index c04f2cc..eeb4539 100644 --- a/Nimble/Categories/NimbleStore+Savers.m +++ b/Nimble/Categories/NimbleStore+Savers.m @@ -40,7 +40,7 @@ + (void)nb_saveInMain:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy [context performBlock:^{ NSMergePolicy *originalMergePolicy = context.mergePolicy; - context.mergePolicy = NSOverwriteMergePolicy; + context.mergePolicy = mergePolicy; changes(NBMainContext); @@ -69,7 +69,7 @@ + (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes withMergePolicy:(NSMerge [context performBlockAndWait:^{ NSMergePolicy *originalMergePolicy = context.mergePolicy; - context.mergePolicy = NSOverwriteMergePolicy; + context.mergePolicy = mergePolicy; changes(NBMainContext); diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate index 1c0eb20a4d9f01b2c42abf0413b6e3b852370130..14a79cfeb2b50dd4591aa4813d9862a02a15ec2c 100644 GIT binary patch delta 5978 zcmZ`+30zdw_rLeP*@u}oZ|1!>Gr-InKnZssQ4tl*JrNf~MN9%2agv&^MU%Q7>~%&h)*W<>D+|NWWIhq-gkx#xcGJ>PTgxu-|% z98)DS&oS<0)^=F6tbdGq3d%uKkqb>j(@`$UL;0ux6{1;aHY!KYp+#shT7q6euOKg~ zLA9t3twrn5db9y;L=ETzv>knj8qp546McmCqvPlV`V4)6zC@SM*XSGcJ-Uj1MAy*` z^b5L$ena=rpXhIlF~JO0V;weNekvBQh{JINZiCz6NF0lw#9eV5?uO%WBJPX(;lX$a z9*$G-SUe7o$7whdXW_|s3Z8}w@eDi*KZo5I@FKhzFTvG#C9c7n@MiojuE!tXM!W;> z#s~0W{D~(W$GiKGr$~P?l#C#$B%NfE9Fj+hNg0_(%E=34A$gI!LaN9zQcXN$IeCL@ zAzR72WE**p)RXr~1Nne#C%edQa*{NWGvsq}o_s|vlCQ}(piY84F`&f|(E|v@c_0+A-~!4opX;6VsXL!bCH@nBGhuCXpG&Br(I8WM&ML z%8X?uF&WIWOeT}XOkoO`Vy1+d!;~`Ro`Iwfvj=*477`G4!EOix0&*BnKdBjpK0^l# z^ju-g^|4HUJZd~7!BX(RyVPhWd<3b_Q1!rUS4lxpzanR5hQUC8r%WxFot!z#m6J)u z83wUmaj~noBs0GxU|5`#Sz0i&B*V}t;9B&YlFf0a(;s6pvyw8ioVjO^8flOgjY8=t zY9ktrQqUNbipHXGXgo?o6Tkvi2!;>{1sm8w0>?%afu2E;D3N|LQ5KqvvMIuFx`ibA zNrPf2fpXt=3_frJoLMt-a-0t#i@q&*zLdYxc0#Tn*_a}yQ`L-N1}a8TUQ`4TUQ_~Y zAk~wojZU0{=K7?i(AJB}AQDo?49|4sH_vgS=aI1%0jfar;R%R>cC}~$MYa&yQ#51g zQE$;^r7T62Ui30_fMLz^s?ZxKYCT$ps*wjRN3WvS(Cg3 zT8UPn)#xpF61qZf7zO=cG^9{$lY^>;Sqo=o<+>(!F36hZoLu6Xd?Dr8$HK*h=-o^^b#n}!J%c5r%r@yIzN13Sxnb% zJvusKV&Y=T)5>DI#dh!Lh%RqJyU=d52krIrRq@dilT!w`=$ZxjnMI{FRJ?C|a>@ul zj?d5mbdbjMV{`}|Mn}+5bPOeWvX!IN!yyqyLLW%->{0d@eG*l!MW@hd^eJjWXP__i zhk-B{hQhEWbdJtnh0aeHn(fRlaZPbKi|EFm$}sTBuDq;VX9}g8vqMVeEN4-1=ez*2 z3+OA)9F-)mK^M_J-^d+sa~Yk70r1p>{+T7toPr{kvp69CmdXdgQ)2@j1F~yWHiX&+ zWCNUe1p)a_RQ~k;lKW2MCi-<;a!S9VqD*=QH_<)=I)iRg=y%ZX=q^EjcqFx1l?)>Q zWf-zNqpbZsCxh*phk);+zdU=?A_e?_0^XyxD19#fLH~L#sXNLrqQXn+4(&1wksb20 zGK%SDhvxgZH!jmv;>yqIIonk-b-1%A$2qcqlAyGwC(Y8{jb%uS<>(KrM88vLowG8F zo$2(u$eEkzV+bG^1Ihjq!y2qjO-@N2om7K^(7wPhpwVMC!(d8I89uWllOA_Vq-(L> z7waZp(qfL%8XI9849hSGWo6NnCGPT$jOo1Fo9iQZ!QZm-%oSin>l{3{pnh+=>!wa&VbRn9t9PC=Yv`OxOVOfSxdS^mup z7(2#yl%7(9p-YhucQG!3*)X>S_iQ}(F=SqUIYkKmH;zrX=%ZAcr9Ls*W(RP0rTN`SO71y zDlNWx@>qd*tSUTK4*Wmx_H0@N7Cu%4S|vOB1N?dZ*beX>x`!3CcliU|g2i-;OMu4D zmpTW1sZ&L_Oluv@dVB;Q%`iMc&x~HcqURM2tHH<6zQ;s*b-?sEK2fcWl-J;sXkWFq z(_nlWH$CFv8F(2|152Fq1@v=#9x7p3OF%E+OOJ)@GQI+@Kot#WnbB%|#Lvt4Iu%z_ z@j7EWoa#Ake4!J~p$H-;3Rn&6X&!~aM%d(|5l>+coKu*YpY6;ZTH?$r_T8$U!=_|U zt*K4VNmM)5RqUc=WHh~`0?bHp=F+h<+h_TZpoAqHGJ1&t-trP7tf5PH=G(hdTh-!b zOB->Zs2X&QNVHhj){rndsDoNa9ocLVN!s}=zNLymK8yBru-0eMY|xp+qNrMQnMfpt z-VU{}u9gnzhYo$8)Cs;y>qzPByJ(sx#gl|b2z$W>=+&%9Bz*(P=DEO2?g3=bBeTKq zc8l55B#8!!n8E8M!{MD4G$YAqszBFZh?k_m<`%_RGTx{776y4q8f&RZRkL)K0$U*Wk9EX!|8k*oNoLff@ zlOyCPIYvGq$KgDD1y|q)_!aKZxU^izrQ`xT#i_E{U;fzF%UAivQI^Z#^+a0!?dL{o`4(h3!QP(Kch@>>XXmY zyL{!zwb|V?u5mre$Cq{M8tZG7n{oGL z2L4yvgP6h8*--c$?owxe_?;c^w6Cax!V_$Ba3h#el!DAi_|wabhWiv`f<4SSj+sDf z8Z(|rg9q?;4U^7Hgn!^)s-0=SF=R4M@**95&K3DHhRMN60lFS!rZc%ro}aE~D=?|R zvI?xAS>8e>rpQN&3e2=(lkpJ&nb`rYoU-PFR^oX9v9dbkfX5rgyMd`lO(~&GHejSe zRuqmppg7c%W?l+OBU4B|DJ4Lk$uE+{q>?_9tLYPYCw&NCCcl#3$Q^Q*K7Q|$2jm|H z(ZHG*fj)h$^x12pQ4C`um~8rveVwUizLCjf4q1Y1h%8<9j4VTzDVr>F%5vN?mu$K$ zPX@C2vIVk*vPH5bvZb<0S(U6>wp>;tYml9k{Uhh(edQ_gEP1}XOkOFkl2^-@%U_ef zAzvY1DPJvLBd?b?$hXTI8a_Z>7z;2OwyEV z=4-r~O`3N!TQrTD{hEWCLz)wsbDHy-FE!t5e$o7@`Aze;R-x5vO$)|%8eN@k zoo<6}o338hpxdr%)a}%Lp}VWM>SOf@ZhbF(AN??WvVNpKMW3o4r=PCR)6dnH>)rbK z`UU!h`W5i=X3%d$KxvKH3HN^BS# z!FFQ1v59Olo62Ufli6%`3R}$1V&|}BY&q*@J?u)>%hs}M+4ZdZeYTO^$?jtJvj^Ej z>=Cw!y}PhH-`>Ly2LQVUA(0!DCoys5NXgG#M@# zt{A>Cd}p|7_{;FO;a?7O3@7LGoRtgVY@Eb}aS>cwt}_?S#c~N;Z!VD=!adC;ajD!m zF3rtlaoOAyZU*-p2i$ya0k?{Ki}P}|+*)o6w~edk8o1ru58Mr-+2}A1G7dA&Fg|Cj zFg|ZwXk27mV)Pi_Fs?AJG_E$jZG6}Gp7DKSqj9HkmvN7AukonyobiJ3qVclvJL6U3 z560`p+a_d^o0KNCNpCWkj3(aXjxr51<(tY(i%d&QOHGxgDpR#-xyfs)HLW$RH*GY% zZQ5+wYC2^4o#*);{9rzfpTfKN>3lw4$QSVo_+|WZ{x$wT{G0qLegogY@8Cb;ck>7M zkNLy=QT`bJIsX-ZiNC^s&tKzznZj(LR9Gl17G4r6g({(1cuS}e>V);eM&WJYLt&?|OV}&y z7Y+)a3TK6L!WY5?;i7O|xFOsWeiQBpcSS~2h$>Ml>O@wwh>{p4Mu=_2C&aFzJ6=o> zdy7wr1H?h%5HVfM7H5dF#5v+z(JfYp&x&TS_dImbI4mEDe_JmK~OlEW0h&EO)Hf%2?%ArB!X!T6NZ7 zYpB(3by&l#ZLE>jC~KUxyEWdLU|nO~Y~5DB_U@+z7F{|Kw62;CN1AKDPQJ+v`&f2jLl=%LUfp~pgxhkh3N zP3X^|f7*ymW>eTyHjT|>6KrOi)fQs2*&=OE+WOdr*~Zw$+Q!=^*e2SXwj7(wHrio`!@Ry`yu;j z`$hXz`wwpWb^FiuU+jO_|Fr*Q|J(krge8r{OE#&!^rRFgb(i9$1ZjXYNE#wNEhS0G z(l{wwDv;($ZmB|AAT5*@Nv}y>X^T`ZHAvf~kEGqwUTME{PWr`BNw;0%yHgv!EwoP#c{)N({anu`%YL|*p#rTVbj9$!o$KlhewCUhR229i_k={ V5rY5eiwFsPGxG!A&Hp3J{{w$THx~c^ delta 5763 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 From 29aec0b9a0dfe9ae7022b1274dc3dfa5f73d164b Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 22 Sep 2014 11:23:44 +0800 Subject: [PATCH 11/14] publish api method --- Nimble/Categories/NimbleStore+Savers.h | 5 +++-- .../UserInterfaceState.xcuserstate | Bin 10811 -> 10516 bytes 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Nimble/Categories/NimbleStore+Savers.h b/Nimble/Categories/NimbleStore+Savers.h index 2a9a7fc..32e6f4c 100644 --- a/Nimble/Categories/NimbleStore+Savers.h +++ b/Nimble/Categories/NimbleStore+Savers.h @@ -28,10 +28,11 @@ + (void)nb_saveInMain:(NimbleSimpleBlock)changes; -+ (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes; - + (void)nb_saveInMain:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy; ++ (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes; + ++ (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy; /** * Perform all the changes in a background queue and then merge everything into the main context diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate index 14a79cfeb2b50dd4591aa4813d9862a02a15ec2c..14ada9aa46e8e9532edd4f79cb0f2db6bb239e2a 100644 GIT binary patch delta 2368 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 NAU*s0=6C2p{0besx$^)3 delta 2431 zcmZWndsJ0*7C!g<&imf;KEHGBx%ZyOz1Pr5MbH2dA2n0HWt@bJvJQ?<0FVHNf?;4d7y-tC@n8Z-2N@s}JO-Wu)4gPGB6)302Q%OXgBWDOXlXxF3629&Y78)TUIbHuYYd;ImL5JbMvATs7BSl`HKlt z%M%|+9^B7POiW6w$SNP0JTNBE{avoY*l=b-4@9fnYkSA_Ey|fTCwpGrn4$^U1x1sy z3(5+LW(;|*pzN6md8IS*CKmThSuiB}n)m+LTu%ezEu1DO=>>&3v-2jE6_@7qoz&A? zIw!s`IzXFGUw3}1bRm^4SFBOXaDhwCwHU5%0h)jF-&+5Fos`(YK)fpqEMS8m2suAF z=bWFN^Xow`a32x|y`3)Sf)jKuI+@YM)S|H;eLiKt*Hg+|E&)yc*3nnfNS_AqILLBtIky|Y z6fo7fl$B=uny{!cKp7_4A=NK(Y@&V=zcH@%m#(d5$C9LqSA#{y0A(Y z;glYCVTjv>Bfq*xQ0gE~Mx_fxJAEZIcM<2KMQj6{tWYi9R9&tcr=A^RhvOLFy zP>7C%kiJL~G6WfcPC~QLe6$E%fI8?4=!@tIv>L5JYtcHi4eda`MK7UO&}(QndL6xq z-a_vH1c*Qe5NJRLeqi(*APB->de4u&3}WDW48v?J4I7P3!JfpXVcA$NmWR!VUAI8MYi-iB)0MSPfQ-)nN@-Gjts1qMTSntRSk0YT_j# zO8kS^MI0s~9}~xj4&nrHlISGP5*LZf#8u)K;udj-L`amx$OLjU`7~KT&L)e<60(A< zBCE+7vX-nPSCOxftI18|7IGW8oopgwWHZ@9wvq?P4zi1KQ3jPpjiPd?5^4cePE}A5 zs*+ksRZ-Pc4OL6kQQN7L)DIEbLqj@5_oI{O2k9~NWAqeyI=z6dqF<#O>BIC9`Y8Pg z-9evV2!>~TOn@;Nn+Y+!m^fwtGlUt+3}-T#r}L)zA2TPJ zFPN{GADIixCFTlq+fBGRx9o=QkUQQz*geEO)Eyb_UgzHGZg(GapK_n}h#uARkY}bR z>RIdA=y}KUFVDN4ot}N3L!P6a6P{C^tDc)IU1I09P zm^eZlEshn(i<#nNF)JeGh||S<@mX=P=!i?irQ&Pi8)Chf_ zlWb|EG){U}S}avc&r8ds<m59xk|2(lkiK}2~WXuunS&L1mI z)sgCGb&5J&eO8^P&Q}+z5w%i%UVTB0s%z9uYNPtLxnNrIwLvLS=*}Z(cahgX&-0@wL{tw?U?qdc3k^RJMX2v zVQ+$Wls7BlE%R1;H+Xk=o4qaGo!?eBHk5zMH;V{%n7dzrZQiw97Go)v zVcl;HvXZP6E7eM~9=1kWqph*lcq`qSY)!X{twmPEs?bb=_g56+mvUk|cc8lF=x7)|;PwnIOXZ9C%r~Qrno!w<$v@hGkt_8D#`N3y` lGlPYpU?@J65E>Xt3SAE~VLl9z-vdSOAy{$`|Chtse*vWa$*TYW From b256e04a9439ffbca1439a300f78d0395c4636fe Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 23 Sep 2014 11:41:00 +0800 Subject: [PATCH 12/14] fix the error with MergePolicy properties --- Nimble/Categories/NimbleStore+Savers.m | 6 +++--- .../UserInterfaceState.xcuserstate | Bin 10516 -> 11344 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Nimble/Categories/NimbleStore+Savers.m b/Nimble/Categories/NimbleStore+Savers.m index eeb4539..c811a1c 100644 --- a/Nimble/Categories/NimbleStore+Savers.m +++ b/Nimble/Categories/NimbleStore+Savers.m @@ -29,7 +29,7 @@ @implementation NimbleStore (Savers) + (void)nb_saveInMain:(NimbleSimpleBlock)changes { - [self nb_saveInMain:changes withMergePolicy:NSErrorMergePolicyType]; + [self nb_saveInMain:changes withMergePolicy:NSErrorMergePolicy]; } + (void)nb_saveInMain:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy @@ -57,7 +57,7 @@ + (void)nb_saveInMain:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy + (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes { - [self nb_saveInMainWaiting:changes withMergePolicy:NSErrorMergePolicyType]; + [self nb_saveInMainWaiting:changes withMergePolicy:NSErrorMergePolicy]; } + (void)nb_saveInMainWaiting:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy @@ -93,7 +93,7 @@ + (void)nb_saveInBackground:(NimbleSimpleBlock)changes + (void)nb_saveInBackground:(NimbleSimpleBlock)changes completion:(NimbleErrorBlock)completion { - [self nb_saveInBackground:changes withMergePolicy:NSErrorMergePolicyType completion:completion]; + [self nb_saveInBackground:changes withMergePolicy:NSErrorMergePolicy completion:completion]; } + (void)nb_saveInBackground:(NimbleSimpleBlock)changes withMergePolicy:(NSMergePolicy *)mergePolicy completion:(NimbleErrorBlock)completion { diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate index 14ada9aa46e8e9532edd4f79cb0f2db6bb239e2a..0acca647ce5093fb9b7b560e9d057ab3edcf1cb7 100644 GIT binary patch delta 6629 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 Nggx8z9sZ0z@;?Kjv3CFf delta 6104 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 Dz^YV- From 211885a0566efcc2886f9128ec4f5832ca4f88f6 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 29 Sep 2014 11:21:05 +0800 Subject: [PATCH 13/14] fix *** Collection <__NSCFSet: 0x16d72970> was mutated while being enumerated. fix https://github.com/MarcoSero/Nimble/issues/21 --- Nimble/Categories/NimbleStore+Savers.m | 5 +++++ .../UserInterfaceState.xcuserstate | Bin 11344 -> 10921 bytes 2 files changed, 5 insertions(+) diff --git a/Nimble/Categories/NimbleStore+Savers.m b/Nimble/Categories/NimbleStore+Savers.m index c811a1c..e319e03 100644 --- a/Nimble/Categories/NimbleStore+Savers.m +++ b/Nimble/Categories/NimbleStore+Savers.m @@ -100,6 +100,9 @@ + (void)nb_saveInBackground:(NimbleSimpleBlock)changes withMergePolicy:(NSMergeP NSParameterAssert(changes); NSManagedObjectContext *backgroundContext = [NSManagedObjectContext nb_backgroundContext]; + if ([backgroundContext tryLock]) { + [backgroundContext lock]; + } [backgroundContext performBlock:^{ @@ -116,6 +119,8 @@ + (void)nb_saveInBackground:(NimbleSimpleBlock)changes withMergePolicy:(NSMergeP NBLog(@"Error saving background context: %@", error); } + [backgroundContext unlock]; + if (completion) { dispatch_async(dispatch_get_main_queue(), ^{ completion(nil); diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate index 0acca647ce5093fb9b7b560e9d057ab3edcf1cb7..48943f9735626bc7a82ac8ad497d161c564175a6 100644 GIT binary patch delta 6103 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 From 12b3e32f4c2063c5040fcc467478d7e66645d7fc Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 9 Oct 2014 12:43:19 +0800 Subject: [PATCH 14/14] delete the error code. --- Nimble/Categories/NimbleStore+Savers.m | 5 ----- .../UserInterfaceState.xcuserstate | Bin 10921 -> 10949 bytes 2 files changed, 5 deletions(-) diff --git a/Nimble/Categories/NimbleStore+Savers.m b/Nimble/Categories/NimbleStore+Savers.m index e319e03..c811a1c 100644 --- a/Nimble/Categories/NimbleStore+Savers.m +++ b/Nimble/Categories/NimbleStore+Savers.m @@ -100,9 +100,6 @@ + (void)nb_saveInBackground:(NimbleSimpleBlock)changes withMergePolicy:(NSMergeP NSParameterAssert(changes); NSManagedObjectContext *backgroundContext = [NSManagedObjectContext nb_backgroundContext]; - if ([backgroundContext tryLock]) { - [backgroundContext lock]; - } [backgroundContext performBlock:^{ @@ -119,8 +116,6 @@ + (void)nb_saveInBackground:(NimbleSimpleBlock)changes withMergePolicy:(NSMergeP NBLog(@"Error saving background context: %@", error); } - [backgroundContext unlock]; - if (completion) { dispatch_async(dispatch_get_main_queue(), ^{ completion(nil); diff --git a/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate b/NimbleDemo.xcodeproj/project.xcworkspace/xcuserdata/dw_ios.xcuserdatad/UserInterfaceState.xcuserstate index 48943f9735626bc7a82ac8ad497d161c564175a6..b502ad2de4172f7714c2be28d698520b9579b950 100644 GIT binary patch delta 5306 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