これはとても簡単なことのように思えますが、私はそれをまとめることができません。CoreData 属性を設定するために RestKit 0.20 を使用する iOS アプリがあります。私のメイン ビュー コントローラーは、サーバーに要求を行うことによって起動時に設定されるコレクション ビューです。
ユーザーがセルを選択すると、そのセルに含まれるデータを詳細ビュー (画像とタイトル) に転送できます。しかし、詳細ビューコントローラーに表示されるすべての情報を取得するために、サーバーに別の要求を行う必要もあります。エンティティ名は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
取得する必要があるオブジェクトを指定する正しい方法ではないため、null になります。
私のためにこれに光を当ててください!明らかに初歩的な質問なので、コード スニペットは本当に役に立ちます。前もって感謝します!
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);
}];