【发布时间】:2013-07-03 04:47:18
【问题描述】:
我有一个使用 CoreData 和 Restkit 0.20 的 iOS 应用程序。主视图控制器是一个集合视图,由使用 Restkit 对我的服务器的请求填充。对服务器的请求返回要放置在每个单元格中的图像和标题。如果用户选择了一个单元格,我需要向服务器发出第二个请求,以获取有关所选单元格的详细信息。
我花了一个晚上尝试在prepareForSegue 方法中完成此任务。问题是我似乎无法弄清楚如何从prepareForSegue 中发生的请求中获取结果。
这里是prepareForSegue 方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"newsDetail"]) {
// I USE THIS PORTION TO GET DATA THAT IS NEEDED FOR THE GET REQUEST TO THE SERVER AND TO PASS SOME ADDITIONAL ITEMS FROM THE FIRST REQUEST TO THE DETAIL VIEW CONTROLLER
NSIndexPath *indexPath = [[self.collectionView indexPathsForSelectedItems] lastObject];
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
NSString *articleID =[object valueForKey:@"gistID"];
NSString *personID = [object valueForKey:@"userID"];
// I USE THIS LINE TO ASSEMBLE THE STRING FOR getObjectsAtPath BELOW
NSString *getArticle =[NSString stringWithFormat:@"/rest/article/getArticleForView?aid=%@&pid=%@&ip=255.255.255.0",articleID,personID];
//HERE I MAKE THE CALL TO THE SERVER USING RESTKIT METHODS
[[RKObjectManager sharedManager] getObjectsAtPath:getArticle parameters:nil success:nil failure:nil];
[[segue destinationViewController] setDetailItem:object];
}
}
这是我在详细视图控制器中加载它的方式。
- (void)configureView
{
if (self.detailItem) {
self.newsDetailText.text = [[self.detailItem valueForKey:@"fullArticle"]description];
NSURL *photoURL =[NSURL URLWithString:[self.detailItem valueForKey:@"imageUrl"]];
NSData *photoData = [NSData dataWithContentsOfURL:photoURL];
self.newsDetailImageView.image =[UIImage imageWithData:photoData];
}
}
它将正确 segue 并且图像(已经从第一个请求中保留)将被加载,但文本(从 segue 的请求中检索)不会。事实上 valueForKey fullArticle 是空的。
根据这个问题,我可能很明显我是一个菜鸟。考虑到这一点,代码 sn-ps 非常有帮助。谢谢!
【问题讨论】:
-
是否有原因您没有在目标视图控制器中加载数据并处理成功和错误回调以便您知道发生了什么?
-
Wain,主要是因为我在这方面还很陌生,并且仍在学习处理这些事情的最佳方法。您是否建议我在详细视图控制器的 viewDidLoad 部分调用服务器并从那里加载所有内容?如果是这样,我曾考虑过这一点,但认为在 segue 中执行操作会更容易。我认为主视图控制器具有所有必要的组件来进行调用并将结果传递给细节视图控制器。我愿意接受建议!如果您看到更好的方法,我会试一试。
-
我会做更多的事情,比如将路径传递给目标视图控制器,并允许它开始下载并处理响应数据 + 回调。
标签: ios core-data restkit nsfetchedresultscontroller segue