Rotten Tomatoes APIから値を取得しUILabel
ていますが、値が既に取得されている場合は常に、カスタムセル内のテキストを更新する必要があります。リロードしてみUITableView
ましたが、ループします。
これが私のコードです:
if (ratingTomatoLabel.text == nil)
{
NSLog(@" Nil");
NSString *stringWithNoSpaces = [movieTitle.text stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
NSString *rottenTomatoRatingString = [NSString stringWithFormat:@"%@%@%@", @"http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=6844abgw34rfjukyyvzbzggz&q=", stringWithNoSpaces, @"&page_limit=1"];
NSLog(@" Rotten URL: %@", rottenTomatoRatingString);
NSURL *rottenUrl = [[NSURL alloc] initWithString:rottenTomatoRatingString];
NSURLRequest *rottenRequest = [[NSURLRequest alloc] initWithURL:rottenUrl];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:rottenRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@" 3");
self.testDict = [JSON objectForKey:@"movies"];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
}];
[operation start];
NSLog(@" %@", ratingTomatoLabel.text);
ratingTomatoLabel.text = @"...";
}
else if ([ratingTomatoLabel.text isEqualToString:@""])
{
NSLog(@" isEqualToString");
// Do nothing
}
else
{
NSLog(@" else");
}
return tableCell;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@" fetched!");
if ([ratingTomatoLabel.text isEqualToString:@"..."])
{
NSLog(@" 2nd nil");
NSDictionary *dict = [self.testDict valueForKey:@"ratings"];
self.criticsScoreString = [NSString stringWithFormat:@"%@", [dict valueForKey:@"critics_score"]];
self.criticsScoreString = [self.criticsScoreString stringByReplacingOccurrencesOfString:@" " withString:@""];
self.criticsScoreString = [self.criticsScoreString stringByReplacingOccurrencesOfString:@"(" withString:@""];
self.criticsScoreString = [self.criticsScoreString stringByReplacingOccurrencesOfString:@")" withString:@""];
self.criticsScoreString = [NSString stringWithFormat:@"%@%@", self.criticsScoreString, @"%"];
ratingTomatoLabel.text = self.criticsScoreString;
NSLog(@" %@", ratingTomatoLabel.text);
}
else
{
NSLog(@" 2nd not nil");
NSLog(@" %@", ratingTomatoLabel.text);
// Do nothing
}
}
テキストに値を設定した後にコードを追加する[self.myTableView reloadData];
と、ループが発生します。これを行うための最良の方法は何ですか?ありがとう!
更新:更新されたコードと別のメソッドが含まれています。また、私のratingTomatoLabelは、表示されていないときは常にnilになります。