OSDN Git Service

deleteObject:をHMCoreDataManagerで行うように変更
[kcd/KCD.git] / KCD / HMAirBaseCommand.m
1 //
2 //  HMAirBaseCommand.m
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2016/11/21.
6 //  Copyright © 2016年 Hori,Masaki. All rights reserved.
7 //
8
9 #import "HMAirBaseCommand.h"
10
11 #import "HMServerDataStore.h"
12
13 #import "HMKCAirBase.h"
14 #import "HMKCAirBasePlaneInfo.h"
15
16
17 @implementation HMAirBaseCommand
18
19 - (NSString *)dataKey
20 {
21     return @"api_data.api_air_base";
22 }
23
24 - (NSArray<NSString *> *)cmpositPrimaryKeys
25 {
26     return @[@"area_id", @"rid"];
27 }
28
29 - (void)execute
30 {
31     HMServerDataStore *serverDataStore = [HMServerDataStore oneTimeEditor];
32     
33     NSError *error = nil;
34     NSArray *objects = [serverDataStore objectsWithEntityName:@"AirBase"
35                                                     predicate:nil
36                                                         error:&error];
37     for(NSManagedObject *obj in objects) {
38         [serverDataStore deleteObject:obj];
39     }
40     serverDataStore = nil;
41     
42     [self commitJSONToEntityNamed:@"AirBase"];
43 }
44
45 - (BOOL)handleExtraValue:(id)value forKey:(NSString *)key toObject:(NSManagedObject *)object
46 {
47     if(![key isEqualToString:@"api_plane_info"]) return NO;
48     
49     HMKCAirBase *airbase = (HMKCAirBase *)object;
50     if(airbase.planeInfo.count == 0) {
51         NSManagedObjectContext *moc = object.managedObjectContext;
52         NSMutableOrderedSet<HMKCAirBasePlaneInfo *> *newinfo = [NSMutableOrderedSet orderedSet];
53         for(NSInteger i = 0; i < 4; i++) {
54             HMKCAirBasePlaneInfo *info = [NSEntityDescription insertNewObjectForEntityForName:@"AirBasePlaneInfo"
55                                                                        inManagedObjectContext:moc];
56             [newinfo addObject:info];
57         }
58         airbase.planeInfo = newinfo;
59     }
60     
61     NSArray<NSDictionary *> *planeInfos = value;
62     NSOrderedSet<HMKCAirBasePlaneInfo *> *infos = airbase.planeInfo;
63         
64     for(NSInteger i = 0; i < 4; i++) {
65         NSDictionary *planeInfo = planeInfos[i];
66         HMKCAirBasePlaneInfo *info = infos[i];
67         info.cond = planeInfo[@"api_cond"];
68         info.count = planeInfo[@"api_count"];
69         info.max_count = planeInfo[@"api_max_count"];
70         info.slotid = planeInfo[@"api_slotid"];
71         info.squadron_id = planeInfo[@"api_squadron_id"];
72         info.state = planeInfo[@"api_state"];
73         info.airBase = airbase;
74     }
75     
76     return YES;
77 }
78
79 @end