繁体   English   中英

如何从CoreData实体获取结果

[英]How to fetch results from CoreData Entity

这似乎很简单,但是我无法将其放在一起。 我有一个使用RestKit 0.20填充我的CoreData属性的iOS应用。 我的主视图控制器是一个集合视图,该视图在启动时通过向服务器发出请求来填充。

当用户选择一个单元格时,我能够将该单元格中包含的数据传输到详细视图(图像和标题)。 但是我还需要向服务器发出另一个请求,以获取要在详细信息viewController中显示的所有信息。 实体名称为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为null时,大概是因为objectAtIndex:0不是指定我需要获取的对象的正确方法。

请为我说明一下! 显然,这是一个菜鸟问题,因此代码片段确实有帮助! 提前致谢!

在Wain的帮助下的解决方案

Wain指出请求不会立即发生。 我需要在请求中使用回调来获取我想要的数据。 Restkit提供mappingResults以各种不同的方式。 你可以阅读有关RKMappingResult

这就是我的工作方式。

//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);
}];

您发出的请求不会立即从服务器获得结果。 您应该实现回调以处理成功和错误响应,并使用提供的映射结果来获取要显示的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM