OSDN Git Service

slotitemに廃止済みのアイテムが登録されたままになる不具合を修正 #50161
authormasakih <masakih@users.sourceforge.jp>
Thu, 6 Mar 2014 11:34:47 +0000 (20:34 +0900)
committermasakih <masakih@users.sourceforge.jp>
Thu, 6 Mar 2014 11:34:47 +0000 (20:34 +0900)
KCD/HMMemberSlotItemCommand.m

index 0da7466..422e33d 100644 (file)
@@ -8,6 +8,10 @@
 
 #import "HMMemberSlotItemCommand.h"
 
+@interface HMMemberSlotItemCommand ()
+@property (strong) NSMutableArray *ids;
+@end
+
 @implementation HMMemberSlotItemCommand
 + (void)load
 {
        return ignoreKeys;
 }
 
+- (id)init
+{
+       self = [super init];
+       if(self) {
+               _ids = [NSMutableArray new];
+       }
+       return self;
+}
+
 - (void)execute
 {
        [self commitJSONToEntityNamed:@"SlotItem"];
 }
 - (BOOL)handleExtraValue:(id)value forKey:(NSString *)key toObject:(NSManagedObject *)object
 {
+       // 取得後破棄した艦娘のデータを削除する
+       if([key isEqualToString:@"api_id"]) {
+               [self.ids addObject:value];
+               return NO;
+       }
+       
        if([key isEqualToString:@"api_slotitem_id"]) {
                [self setMasterSlotItem:value toObject:object];
                return YES;
        }
        return NO;
 }
+
+- (void)finishOperating:(NSManagedObjectContext *)moc
+{
+       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];
+       if(error) {
+               NSLog(@"HOGEEEEE");
+               return;
+       }
+       
+       for(id obj in array) {
+               [moc deleteObject:obj];
+       }
+}
+
 @end