RestKit 0.2を使用してサーバーからJSONファイルを取得し、オブジェクトをCoreDataスタックにマップしています(TwitterCoreDataの例に類似しています)。
最初のリクエストでは、次の結果が得られますArtist1, Artist2, Artist3
。
2番目のリクエストでは、1人のアーティストが古く、結果は次のようになりますArtist1, Artist3
。
これでArtist2
、ローカルストアから削除され、に表示されなくなりますUITableView
。Artist2
ただし、ローカルストレージからを削除する方法が見つかりません。
RestKit 0.2のオブジェクトを管理対象オブジェクトストアから削除するにはどうすればよいですか?
これは私がしていることです:
#pragma mark - Data methods
- (void)fetchResults {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Artists"];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"ordernr" ascending:YES];
fetchRequest.sortDescriptors = @[descriptor];
NSError *error = nil;
// Setup fetched results
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
[self.fetchedResultsController setDelegate:self];
BOOL fetchSuccessful = [self.fetchedResultsController performFetch:&error];
if(fetchSuccessful){
data = [self.fetchedResultsController fetchedObjects];
[_tableView reloadData];
NSLog(@"Fetched artists: %i", [[self.fetchedResultsController fetchedObjects] count]);
}
}
- (void)loadData {
[[RKObjectManager sharedManager] getObjectsAtPath:@"/artists.php" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"Fetched artists: %i", [[mappingResult array] count]);
for (id object in data) {
if (NO == [[mappingResult array] containsObject:object]){
NSLog(@"DELETE 1 object...");
//HOW TO DELETE THE OBJECT HERE??
}
}
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"ArtistsLastUpdatedAt"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self fetchResults];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
RKLogError(@"Load failed with error: %@", error);
}];
}