无法按块将对象添加到数组实例 var



我想将对象添加到NSMutableArray类型的实例var中,我正在创建一个块(reverseGeocodeLocation)。我可以在定义的对象中看到值。但是我不能让它工作,将它们添加到实例var。

我已经考虑过__block或__strong前缀。但我似乎漏掉了一些东西。你能给我个提示吗?实例var " tableviewwrows "在运行代码块后仍然为空。

谢谢!塞巴斯蒂安。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    CLLocation *currentLocation = [locations lastObject];
    CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
    [geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        if (error == nil && [placemarks count] > 0) {
            CLPlacemark *placemark = [placemarks lastObject];
            CLLocation *userLocation = [placemark location];
            NSString *latitude = [NSString stringWithFormat:@"Lat. %f degrees", userLocation.coordinate.latitude];
            NSString *longitude = [NSString stringWithFormat:@"Long. %f degrees", userLocation.coordinate.longitude];
            NSString *altitude = [NSString stringWithFormat:@"Alt. %f m", userLocation.altitude];
            NSString *speed = [NSString stringWithFormat:@"Speed %f m/s", userLocation.speed];
            NSString *course = [NSString stringWithFormat:@"Course %f degrees", userLocation.course];
            [self.tableViewRows insertObject:latitude atIndex:0];
            [self.tableViewRows insertObject:longitude atIndex:1];
            [self.tableViewRows insertObject:altitude atIndex:2];
            [self.tableViewRows insertObject:speed atIndex:3];
            [self.tableViewRows insertObject:course atIndex:4];
        } else {
            NSLog(@"%@", error.debugDescription);
        }
    }];
    [self.tableView reloadData];
}

您必须在后台操作完成后重新加载您的表。它应该在完成处理器中。

试试这个

__block NSArray *dataArray;
[geoCoder reverseGeocodeLocation:currentLocation 
               completionHandler:^(NSArray *placemarks, NSError *error) {
//...
   dataArray = @[latitude, longitude, altitude, speed, course];
   NSLog(@"Just checking... %@", dataArray);
   dispatch_sync(dispatch_get_main_queue(), ^{
      self.tableViewRows = [NSMutableArray arrayWithArray:dataArray];
      [self.tableView reloadData];
   });
 }];

我刚刚调试了一下。但还是一样奇怪的东西.....数组self。tableviewws正在填充block内的数据。但是,只要我在外部数组上尝试"count",返回的值就是0。在区块内部,它是5,因为它应该是?!?

相关内容

  • 没有找到相关文章

最新更新