RestKit を使用して、特定の Web URL からオブジェクトをロードしています。マッピングを行い、tableView に表示します。わかりました、それは動作します。しかし、インターネットに接続していないときは、最後に読み込まれたオブジェクトのコンテンツが読み込まれます。奇妙なのは:
最後にロードされたオブジェクトを実際にロードするわけではありません。オブジェクト「1」をロードし、アプリケーションを閉じ、再度実行してオブジェクト「2」をロードしてから再度閉じ、接続をオフにして実行すると、オブジェクト 1 のコンテンツが表示されます。コンテキストをクリーンアップしてオブジェクト「2」、次に「1」をロードし、接続をオフにして実行しても、オブジェクト「1」のコンテンツが再び表示されます! オブジェクト「1」にはある種の「優先度」があるようです。
私がやっていること:
- (void)dataDownload
{
[self showLoading:YES];
RKObjectManager* objectManager = [RKObjectManager sharedManager];
[objectManager loadObjectsAtResourcePath:@"my-url" delegate:self block:^(RKObjectLoader* loader) {
loader.objectMapping = [objectManager.mappingProvider objectMappingForClass:[Conteudo class]];
}];
}
- (void) loadDatabase
{
NSFetchRequest* request = [Conteudo fetchRequest];
NSSortDescriptor* descriptor = [NSSortDescriptor sortDescriptorWithKey:@"createdAt" ascending:NO];
[request setSortDescriptors:[NSArray arrayWithObject:descriptor]];
self.conteudo = [Conteudo organizeData:[Conteudo objectsWithFetchRequest:request]];
}
`
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
[self showLoading:NO];
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastUpdatedAt"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSArray *result = objects;
if(result != nil){
self.conteudo = [Conteudo organizeData:result];
[[NSManagedObject managedObjectContext] save:nil];
}
else
[self loadDatabase];
[self.tableView reloadData];
}
`
助けてくれてありがとう=]