如果API请求中返回错误消息,请不要启动循环

时间:2014-02-25 21:15:25

标签: ios iphone objective-c api

我正在为一些实时信息进行API调用。如果没有实时信息,它将返回:

错误=“找不到实时游戏”;

否则它将返回不同的信息,如hometeam,awayteam,score等。

在我的循环中,我将这些信息添加到数组arrayEuropa中。问题是如果api请求返回错误消息,它不应该向arrayEuropa添加任何内容。

我怎样才能获得这个?

我尝试了在返回错误消息时有效的不同内容,但在没有错误消息时崩溃了。

这是我的代码:

NSDictionary* headers4 = @{@"X-Mashape-Authorization": @"key"};
NSDictionary* parameters4 = @{};

UNIHTTPJsonResponse* response4 = [[UNIRest get:^(UNISimpleRequest* request4) {
    [request4 setUrl:@"https://willjw-statsfc-competitions.p.mashape.com/live.json?key=APIKEY&competition=europa-league&timezone=Europe%2FLondon"];

    [request4 setHeaders:headers4];
    [request4 setParameters:parameters4];
}] asJson];


NSData* rawBody4 = [response4 rawBody];
results4 = [NSJSONSerialization JSONObjectWithData:rawBody4 options:NSJSONReadingMutableContainers error:nil];

for (int i = 0; i <= results4.count-1; i++)
{


    NSString *homeTeam = [[results4 valueForKey:@"homeshort"] objectAtIndex:i ];
    NSString *awayTeam = [[results4 valueForKey:@"awayshort"] objectAtIndex:i ];
    NSString *time = [[results4 valueForKey:@"statusshort"] objectAtIndex:i ];
    NSString *homeScore = [NSString stringWithFormat:@"%@", [[[results4 valueForKey:@"runningscore"] objectAtIndex:i ] objectAtIndex:0]];
    NSString *awayScore = [NSString stringWithFormat:@"%@", [[[results4 valueForKey:@"runningscore"] objectAtIndex:i ] objectAtIndex:1]];


    [arrayEuropa addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys:homeTeam,@"hometeam", awayTeam,@"awayteam", time, @"time", homeScore, @"homescore", awayScore, @"awayscore", nil]];

}

1 个答案:

答案 0 :(得分:0)

也许添加存储的json,它会更容易帮助..

但你应该做的是首先检查是否有值,让我们说:

          if([[results4 valueForKey:@"homeshort"] objectAtIndex:i ])
存储之前

。或者甚至更好,你可以检查错误:

           if([[results4 valueForKey:@"error"] isEqualToString: ""No live games found" ])
           { return; }

然后回来。

希望这有帮助