0

ユーザーの位置とターゲットの位置の間の距離を表示するアプリを試しています。ユーザーの場所の didUpdateToLocation メソッドを取得し、配列に格納するつもりです。次に、それをテーブル ビュー デリゲート「cellForRowAtIndexPath」に入れて距離を計算し、テーブル セルに表示します。しかし、うまくいきません。以下の私のコードを見てください。誰でも助けることができますか?

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation   *)newLocation fromLocation:(CLLocation *)oldLocation{

if (newLocation.horizontalAccuracy < 0) return;

NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];

if (locationAge > 5.0) return;

if (currentLocation == nil || currentLocation.horizontalAccuracy >   newLocation.horizontalAccuracy) {

self.currentLocation = newLocation;
// locationMeasurements is NSMutableArray to store currentLocation (CLLocation) information.

[locationMeasurements addObject:currentLocation];

[self.tableView reloadData];          
       }
    }
}


 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                   reuseIdentifier:CellIdentifier] autorelease];
    }



   CLLocation *location = [locationMeasurements objectAtIndex:indexPath.row];

return cell;

}

クラッシュし、コンソールの配列に何も表示されません (以下を参照)。ただし、この配列を 'didUpdateToLocation' に NSLog すると、正しく表示されます。

**** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'*

次に、cellForRowAtIndexPath で locationMeasurements (配列) を NSLog しようとします。

NSLog(@"locationMeasurements ===%@",[locationMeasurements description]); 

いくつかのステートメントで空白の情報を表示し、後で正しい情報を表示します。下記参照。

locationMeasurements ===(
)
locationMeasurements ===(
)
locationMeasurements ===(
)
locationMeasurements ===(
)
locationMeasurements ===(
    "<+37.33233141,-122.03121860> +/- 5.00m (speed 0.00 mps / course -1.00) "
)
locationMeasurements ===(
    "<+37.33233141,-122.03121860> +/- 5.00m (speed 0.00 mps / course -1.00) "
)
locationMeasurements ===(
    "<+37.33233141,-122.03121860> +/- 5.00m (speed 0.00 mps / course -1.00) "
)
locationMeasurements ===(
     "<+37.33233141,-122.03121860> +/- 5.00m (speed 0.00 mps / course -1.00) "
)

誰かアドバイスをくれませんか?私は何をすべきか?

少し早いですがお礼を。

4

1 に答える 1