私は、単純に思えるこの問題の答えを探すのに何時間も費やしました。
だからこれらは私の解析メソッドです:
-(void)ParseJSON {
NSURL *URL=[[NSURL alloc]initWithString:@"http://www.foo24.com/kokos"];
NSData* data = [NSData dataWithContentsOfURL:
URL];
[self performSelectorOnMainThread:@selector(JSONtoArrays:)
withObject:data waitUntilDone:YES];
}
-(void)JSONtoArrays:(NSData *)responseData {
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSMutableArray *fetchCustomersArray=[json objectForKey:@"Customers"];
NSMutableArray *fetchOrdersArray=[json objectForKey:@"Orders"];
[self setJSONCustomers:fetchCustomersArray];
[self setJSONOrders:fetchOrdersArray];
}
これはデータベースメソッドからのフェッチです。
-(void)fetchOrders{
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext == nil)
{
managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
NSEntityDescription *orderEntity=[NSEntityDescription entityForName:@"OrderEntity" inManagedObjectContext:managedObjectContext];
NSPredicate *NonDelivered =
[NSPredicate predicateWithFormat:@"orderDelivered == NO"];
//setup fetch request
NSFetchRequest *request=[[NSFetchRequest alloc]init];
[request setEntity:orderEntity];
[request setPredicate:NonDelivered];
//fetch
NSError *error;
NSMutableArray *FetchResultsArray=[[managedObjectContext executeFetchRequest:request error:&error]mutableCopy];
[self setDbOrders:FetchResultsArray];
[dbOrders addObjectsFromArray:JSONOrders];
NSLog(@"%@",[[dbOrders objectAtIndex:0]valueForKey:@"orderName"]);
[self addOrders:dbOrders];
}
私がやりたいのは、Core Dataから未配信のアイテムを配列として取得してから、新しい解析済み配列を取得し、データベースからすべてのエントリを削除し、2つの配列をマージして、データベースに戻すことです。これを行うもっと簡単な方法があるかどうかはわかりません。