From 63cc4850610f4e3c12ce2751b1c6efc5adc1e85e Mon Sep 17 00:00:00 2001 From: masakih Date: Sat, 17 Dec 2016 21:35:47 +0900 Subject: [PATCH] =?utf8?q?NSManagedObjectContext=E3=82=92=E7=9B=B4?= =?utf8?q?=E6=8E=A5=E4=BD=BF=E3=82=8F=E3=81=AA=E3=81=84=E3=82=88=E3=81=86?= =?utf8?q?=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KCD/HMJSONCommand.h | 6 ++++-- KCD/HMJSONCommand.m | 19 ++++++++++++------- KCD/HMMemberShipCommand.m | 26 +++++++++----------------- KCD/HMMemberSlotItemCommand.m | 14 ++++++-------- 4 files changed, 31 insertions(+), 34 deletions(-) diff --git a/KCD/HMJSONCommand.h b/KCD/HMJSONCommand.h index 668ba2d4..92e1e5ea 100644 --- a/KCD/HMJSONCommand.h +++ b/KCD/HMJSONCommand.h @@ -9,7 +9,7 @@ #import #import "HMAPIResponse.h" - +#import "HMCoreDataManager.h" @interface HMJSONCommand : NSObject @@ -39,6 +39,8 @@ @property (readonly) NSArray *ignoreKeys; @property (readonly) NSString *dataKey; +@property (readonly) Class coreDataManagerClass; // default is HMServerDataStore. + - (void)commitJSONToEntityNamed:(NSString *)entityName; @@ -52,7 +54,7 @@ - (BOOL)handleExtraValue:(id)value forKey:(NSString *)key toObject:(NSManagedObject *)object; // データ登録後の処理を行う -- (void)finishOperating:(NSManagedObjectContext *)moc; +- (void)finishOperating:(HMCoreDataManager *)store; - (void)setValueIfNeeded:(id)value toObject:(id)object forKey:(NSString *)key; diff --git a/KCD/HMJSONCommand.m b/KCD/HMJSONCommand.m index d7611dfe..405f02cd 100644 --- a/KCD/HMJSONCommand.m +++ b/KCD/HMJSONCommand.m @@ -25,7 +25,7 @@ static NSMutableArray *registeredCommands = nil; @interface HMJSONCommand () -typedef NSManagedObject *(^HMObjectSearcher)(NSString *entityName, HMServerDataStore *store, NSArray *objects, NSDictionary *element); +typedef NSManagedObject *(^HMObjectSearcher)(NSString *entityName, HMCoreDataManager *store, NSArray *objects, NSDictionary *element); @property (nonatomic, copy) NSString *argumentsString; @@ -143,6 +143,11 @@ NSString *keyByDeletingPrefix(NSString *key) { return @"id"; } + +- (Class)coreDataManagerClass +{ + return [HMServerDataStore class]; +} - (void)setValueIfNeeded:(id)value toObject:(id)object forKey:(NSString *)key { id oldValue = [object valueForKey:key]; @@ -208,7 +213,7 @@ NSString *keyByDeletingPrefix(NSString *key) - (HMObjectSearcher)objectSearcher { __weak HMJSONCommand *weakSelf = self; - HMObjectSearcher p = ^NSManagedObject *(NSString *entityName, HMServerDataStore *store, NSArray *objects, NSDictionary *element) { + HMObjectSearcher p = ^NSManagedObject *(NSString *entityName, HMCoreDataManager *store, NSArray *objects, NSDictionary *element) { NSRange range = NSMakeRange(0, objects.count); NSArray *keys = weakSelf.cmpositPrimaryKeys; if(!keys) { @@ -264,10 +269,10 @@ NSString *keyByDeletingPrefix(NSString *key) return; } - HMServerDataStore *serverDataStore = [HMServerDataStore oneTimeEditor]; + HMCoreDataManager *store = [self.coreDataManagerClass oneTimeEditor]; NSError *error = nil; - NSArray *objects = [serverDataStore objectsWithEntityName:entityName + NSArray *objects = [store objectsWithEntityName:entityName sortDescriptors:self.sortDescriptors predicate:nil error:&error]; @@ -278,12 +283,12 @@ NSString *keyByDeletingPrefix(NSString *key) HMObjectSearcher objectSearcher = self.objectSearcher; for(NSDictionary *element in api_data) { - NSManagedObject *object = objectSearcher(entityName, serverDataStore, objects, element); + NSManagedObject *object = objectSearcher(entityName, store, objects, element); if(object) { [self registerElement:element toObject:object]; } } - [self finishOperating:serverDataStore.managedObjectContext]; + [self finishOperating:store]; } @@ -307,7 +312,7 @@ NSString *keyByDeletingPrefix(NSString *key) { return NO; } -- (void)finishOperating:(NSManagedObjectContext *)moc +- (void)finishOperating:(HMCoreDataManager *)store { } diff --git a/KCD/HMMemberShipCommand.m b/KCD/HMMemberShipCommand.m index 9e87805c..a9df4651 100644 --- a/KCD/HMMemberShipCommand.m +++ b/KCD/HMMemberShipCommand.m @@ -271,34 +271,26 @@ static BOOL isFewShipUpdateAPI(NSString *api) return NO; } -- (void)finishOperating:(NSManagedObjectContext *)moc +- (void)finishOperating:(HMCoreDataManager *)store { // ship3の時は1隻のみのデータアップデートがあるため // getshipの時は取得した1隻のみのデータのため if(isFewShipUpdateAPI(self.api)) { return; } - - NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Ship"]; - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT id IN %@", self.ids]; - [request setPredicate:predicate]; - - NSError *error = nil; - NSArray *array = [moc executeFetchRequest:request error:&error]; - if(error) { - NSLog(@"HOGEEEEE"); + + NSError *error = nil; + NSArray *array = [store objectsWithEntityName:@"Ship" + error:&error + predicateFormat:@"NOT id IN %@", self.ids]; + if(error) { + NSLog(@"HOGEEEEE"); return; } for(id obj in array) { - [moc deleteObject:obj]; + [store deleteObject:obj]; } - -// if(array.count != 0) { -// NSLog(@"%ld Objects deleted.", array.count); -// } -// -// NSLog(@"updated count -> %ld\ndeleted -> %@", [[moc updatedObjects] count], [moc deletedObjects]); } @end diff --git a/KCD/HMMemberSlotItemCommand.m b/KCD/HMMemberSlotItemCommand.m index 6a17b9a8..08d67e3f 100644 --- a/KCD/HMMemberSlotItemCommand.m +++ b/KCD/HMMemberSlotItemCommand.m @@ -121,26 +121,24 @@ return NO; } -- (void)finishOperating:(NSManagedObjectContext *)moc +- (void)finishOperating:(HMCoreDataManager *)store { // getshipの時は取得した艦娘の装備のみのデータのため if([self.api isEqualToString:@"/kcsapi/api_req_kousyou/getship"]) { return; } - - NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"SlotItem"]; - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT id IN %@", self.ids]; - [request setPredicate:predicate]; - + NSError *error = nil; - NSArray *array = [moc executeFetchRequest:request error:&error]; + NSArray *array = [store objectsWithEntityName:@"SlotItem" + error:&error + predicateFormat:@"NOT id IN %@", self.ids]; if(error) { NSLog(@"HOGEEEEE"); return; } for(id obj in array) { - [moc deleteObject:obj]; + [store deleteObject:obj]; } } -- 2.11.0