这看起来很简单,但我不能把它放在一起。我有一个使用RestKit 0.20的iOS应用程序来填充我的CoreData属性。我的主视图控制器是一个集合视图,它在启动时通过向服务器发出请求来填充。
当用户选择单元格时,我能够将该单元格中包含的数据传输到详细视图(图像和标题)。但我还需要向服务器发出另一个请求,以获取要在详细视图中显示的所有信息。实体名称为Gist
,属性为fullArticle
以下是detailViewController
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"newsDetail"]) {
NSIndexPath *indexPath = [[self.collectionView indexPathsForSelectedItems] lastObject];
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
[[segue destinationViewController] setmanagedObjectContext:managedObjectContext];
[[segue destinationViewController] setDetailItem:object];
}
}
以下是我在-(void)viewDidLoad
{
[super viewDidLoad];
NSString *articleID =[self.detailItem valueForKey:@"articleId"];
NSString *personID = [self.detailItem valueForKey:@"userID"];
NSString *getArticle =[NSString stringWithFormat:@"/rest/article/getArticleForView?aid=%@&pid=%@&ip=255.255.255.0",articleID,personID];
[[RKObjectManager sharedManager] getObjectsAtPath:getArticle parameters:nil success:nil failure:nil];
NSURL *photoURL =[NSURL URLWithString:[self.detailItem valueForKey:@"imageUrl"]];
NSData *photoData = [NSData dataWithContentsOfURL:photoURL];
self.newsDetailImageView.image =[UIImage imageWithData:photoData];
//This is where I am stuck, How do you fetch the Attribute "fullArticle" from the request that I just made?
self.newsDetailText.text = //valueForKey:"fullArticle" from article with ID `articleID`
}
我尝试使用下面的代码,但fetchedResultsController
已设置为与tableView
一起使用,因此我无法指定在没有indexPath
NSManagedObject *detailText = [self.fetchedResultsController objectAtIndex:0];
self.newsDetailText.text = [[detailText valueForKey:@"fullArticle"] description];
尝试这种方式时fullArticle
为空,大概是因为objectAtIndex:0
不是指定我需要获取的对象的正确方法。
请为我阐明一下这个!显然是一个菜鸟问题所以代码片段确实有帮助!提前致谢!
在Wain的帮助下提供解决方案
Wain指出请求不会立即发生。我需要在请求中使用回调来获取我想要的数据。 Restkit以各种方式提供mappingResults
。您可以在RKMappingResult
下了解here。
以下是我如何使其发挥作用。
//I REPLACE MY SERVER REQUEST WITH THIS
[[RKObjectManager sharedManager] getObjectsAtPath:getArticle parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
//HERE IS HOW I SET THE TEXT FIELD IN THE DETAIL VIEW CONTROLLER
self.newsDetailText.text = [[mappingResult.firstObject valueForKey:@"fullArticle"]description];
// ERROR HANDLING
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
RKLogError(@"Operation failed with error: %@", error);
}];
答案 0 :(得分:0)
您提出的请求无法立即从服务器获取结果。您应该实现回调来处理成功和错误响应,并使用提供的映射结果来显示信息。