保存在Get request Success块中的数据无法使用

时间:2016-06-24 00:43:50

标签: ios objective-c iphone afnetworking-3

我的问题非常简单,我确信它的解决方案也很简单,但我只是不知道,我无法在网上找到解决方案。

这是我的代码:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager GET:@"http://api.dndzgz.com/services/bus" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    //NSLog(@"JSON: %@", responseObject);
    NSArray *locationsArray = [responseObject objectForKey:@"locations"];

    for (NSDictionary *location in locationsArray) {
        NSString *stopId = [location objectForKey:@"id"];
        NSString *stopTitle = [location objectForKey:@"title"];
        CLLocationDegrees latitude = [[location objectForKey:@"lat"] doubleValue];
        CLLocationDegrees longitude = [[location objectForKey:@"lon"] doubleValue];

        BusStop *stop = [[BusStop alloc] init];
        stop.name = stopTitle;
        stop.number = stopId;
        stop.latitude = latitude;
        stop.longitude = longitude;

        [self.stopsArray addObject: stop];
    }

} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

基本上,当我在成功块中检查时,stopsArray会被填充,但是当我稍后尝试使用它时,它是一个空数组。

我该如何解决这个问题?

谢谢

2 个答案:

答案 0 :(得分:0)

试试这个:

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
希望它有所帮助。

答案 1 :(得分:0)

self.stopsArray不是块变量。您需要声明一个数组的块变量。正确的代码如下: 1. __block NSMutableArray *tmpArray = [NSMutableArray array];AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];上方添加此行代码              2. [tmpArray addObject: stop]; self.stopArray = tmpArray;替换此行代码[self.stopsArray addObject: stop];