2013-07-04 80 views
0

擷取結果這似乎是這樣一個簡單的事情,但我不能把它在一起。我有一個iOS應用程序使用RestKit 0.20來填充我的CoreData屬性。我的主視圖控制器是一個集合視圖,它在啓動時通過向服務器發出請求來填充。如何從CoreData實體

當用戶選擇一個單元格時,我可以將包含在該單元格中的數據傳輸到詳細視圖(圖像和標題)。但是我還需要向服務器發出另一個請求,以獲取所有要在detail viewController中顯示的信息。實體名稱Gist和屬性是fullArticle

這裏是SEGUE到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不指定我需要獲取什麼對象的正確途徑。

請一些線索這對我來說!很明顯,一個菜鳥問題,所以代碼片段真的幫助!提前致謝!

的幫助

解決方案從韋恩

韋恩指出,該請求不會立即發生。我需要使用請求中的回調來獲取我想要的數據。 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

韋恩,你太漂亮向右移動到我的下一個問題。這將顯示我實際上知道多少...回調是我做出的請求中的「成功」和「錯誤」參數?此外,我並沒有想到該請求沒有立即完成。我注意到,當我在日誌中顯示映射結果時,它們不會在視圖加載之後才顯示。不知道爲什麼我沒有接受。我將重新審視'RKMappingResult'文檔,試圖解釋如何將它實現到回調中。 – Ben

+0

映射結果基本上只是一個數組,由回調提供給您,下載中返回的對象。 – Wain

+0

Wain!我不知道我昨天爲什麼不能把它放在一起,但你的回調評論是現貨。感謝您的耐心和一致性。選中標記會發給你,我將編輯我的帖子以顯示如何使用它們。再次感謝。 – Ben