2013-07-04 3 views
0

이렇게 간단한 작업을하는 것처럼 보입니다.하지만이 작업을 함께 처리 할 수는 없습니다. 내 CoreData 특성을 채우기 위해 RestKit 0.20을 사용하는 iOS 앱이 있습니다. 내 메인보기 컨트롤러는 시작시 서버에 요청하여 채워지는 컬렉션보기입니다.CoreData 엔터티에서 결과를 가져 오는 방법

사용자가 셀을 선택하면 해당 셀에 포함 된 데이터를 상세보기 (이미지 및 제목)로 전송할 수 있습니다. 그러나 detail 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];  
    } 
} 

에 SEGUE입니다 것은 나는 아래의 코드를 사용하여 시도했다 -(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`  

} 

에 무엇을 사용하지만, fetchedResultsControllertableView과 함께 사용하도록 설정되었으므로 지정하지 않는 방법은 없습니다. indexPath

내가 가져 오기 위해 필요한 객체 지정하는 올바른 방법이 없기 때문에이 방법 fullArticle을 시도
NSManagedObject *detailText = [self.fetchedResultsController objectAtIndex:0]; 
self.newsDetailText.text = [[detailText valueForKey:@"fullArticle"] description]; 

는 아마도 null입니다.

제발 좀 알려주세요. 코드 스 니펫이 실제로 도움이되도록 신참 질문을하는 것이 분명합니다! 미리 감사드립니다! 북두칠성

북두칠성의 도움으로

솔루션 요청이 즉시 발생하지 않는 것을 지적했다. 요청에 콜백을 사용하여 원하는 데이터를 수집해야했습니다. Restkit은 다양한 방법으로 mappingResults을 제공합니다. 에서 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

Wain, 너는 내 다음 질문으로 바로 넘어 가기에는 너무 좋다. 이것은 실제로 내가 얼마나 많이 알고 있는지를 보여줄 것입니다 ... 콜백은 요청의'success'와'error' 매개 변수입니다. 또한 요청이 즉시 완료되지 않았 음이 내게 발생하지 않았습니다. 로그에 매핑 결과를 표시 할 때까지 뷰가로드 될 때까지 표시되지 않습니다. 왜 내가 그걸 받아들이지 않았는지 모르겠다. 'RKMappingResult' 문서를 다시 방문하여 콜백에 구현하는 방법을 시도해 봅니다. – Ben

+0

매핑 결과는 기본적으로 콜백에 의해 제공된 다운로드에서 반환 된 객체의 배열입니다. – Wain

+0

Wain! 나는 어제 이것을 왜 끼워 넣을 수 없었는지 모르지만 당신의 콜백에 대한 언급이 자리하고있었습니다. 인내심과 일관성을 가져 주셔서 감사합니다. 체크 표시가 나타나면 내 게시물을 편집하여 사용법을 보여줍니다. 다시 한번 감사드립니다. – Ben