2014-03-01 75 views
2

我只是試圖將CLLocationCoordinates轉換爲NSValue,以便在稍後在我的應用中返回的數組中使用。這是我的代碼:將CLLocationCoordinates2D轉換爲NSValue

NSUInteger count = [self.locations count]; 
    CLLocationCoordinate2D coordinates[count]; 
    for (NSInteger i = 0; i < count; i++) { 
     coordinates[i] = [(CLLocation *)self.locations[i] coordinate]; 
     NSValue *locationValue = [NSValue valueWithMKCoordinate:coordinates[i]]; 
     [_locationsArray addObject:locationValue]; 
     NSLog(@"location = %@", _locationsArray); 
    } 

然而NSLog顯示該陣列填充(空)值。我不確定我在這裏出了什麼問題,有人指着我正確的方向?

+0

檢查計數不爲0 – Shmidt

+0

當你使用NSValue *值轉換CLLocationCoordinate2D至NSValue = [NSValue valueWithMKCoordinate:座標]。 它迫使你把*** MapKit.framework ***包含到你的項目中,如果你想避免它,請使用[Andrey Chernukha]提出的解決方案(http://stackoverflow.com/users/994107/andrey-chernukha )NSValue * value = [NSValue valueWithBytes:&coordinates objCType:@encode(CLLocationCoordinate2D)]; – TomekF

回答

2

我沒有看到coordinates陣列任何需要。你可能沒有初始化它。 嘗試:

_locationsArray = [NSMutableArray array]; 
for (CLLocation *location in self.locations) { 
    NSValue *locationValue = [NSValue valueWithMKCoordinate: location.coordinate]; 
    [_locationsArray addObject:locationValue]; 
    NSLog(@"location = %@", _locationsArray); 
} 
0

嘗試:

NSValue *locationValue = [NSValue valueWithBytes:&coordinates[i] objCType:@encode(CLLocationCoordinate2D)]; 
1

嗨,你可以將CLLocationCoordinates2D轉換成NSValue做像下面,但你有沒有檢查的座標包含任何值或一次也沒有。

NSValue *value = [NSValue valueWithMKCoordinate:coordinate]; 

感謝

0

它可以是你沒有初始化數組。這就是爲什麼當你登錄時沒有。

_locationsArray = [[NSMutableArray alloc] init];