在过去的几周里,我正在学习 Restkit (v0.10.0) 和核心数据,这些出色的工具提供了无限的可能性。问题是我对如何在这里看到更大的图景有点不知所措。而且由于 Restkit 的更新速度非常快,大多数教程/演示代码已经过时并且不再正常工作。
我已经设法让我的 tableview 充满了远程服务器上我的 json 中的数据。我还研究了如何使远程数据与缓存相结合现在工作,但我正在努力解决 NSManagedObjectContext/NSEntityDescription(核心数据)以及在使用 POST 命令时它如何与 Restkit 一起工作。
如果我理解正确,记录是在 Core Data 中创建的(在注释行 // Create a new instance 之后),然后该数据用于创建 POST 请求,以便将记录发布到服务器。
此代码用于在服务器上创建一条新记录,但是当代码执行时(我看到在我的服务器上创建了一条记录)但我的 tableview 没有相应更新,table view 没有更新,因此新记录是重新启动应用程序时首次可见。从服务器手动刷新数据也无济于事。
希望有人可以给我一些指示,或者可能是一个包含 Restkit/核心数据和 POST 的教程。谢谢!
- (void)createGoalWithName:(NSString *)name andDescription:(NSString *)goalDescription
{
Goal* goal = [Goal object];
goal.identifier = 0;
goal.name = name;
goal.goalDescription = goalDescription;
// Create a new instance of the entity managed by the fetched results controller.
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
[NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[self saveContext];
[[RKObjectManager sharedManager].router routeClass:[Goal class] toResourcePath:@"/api/goals" forMethod:RKRequestMethodPOST];
[[RKObjectManager sharedManager] postObject:goal delegate:self];
[self.tableView reloadData];
}
- (void)saveContext {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSError *error = nil;
if (![context save:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate.
You should not use this function in a shipping application,
although it may be useful during development.
If it is not possible to recover from the error,
display an alert panel that instructs the user to quit the application by pressing the Home button.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}