2015-05-26 84 views
1

我在做一些愚蠢的事情,但不知道是什麼。這裏是我的代碼:從座標插入CLLocation緯度到NSMutable陣列

NSMutableArray *latitudes = [[NSMutableArray alloc] init]; 


NSMutableArray *locationArray = [NSMutableArray array]; 
for (CLLocation *location in self.allPins) { 
    Location *locationObject = [NSEntityDescription insertNewObjectForEntityForName:@"Location" 
                  inManagedObjectContext:self.managedObjectContext]; 

    locationObject.timestamp = location.timestamp; 
    locationObject.latitude = [NSNumber numberWithDouble:location.coordinate.latitude]; 
    locationObject.longitude = [NSNumber numberWithDouble:location.coordinate.longitude]; 
    [locationArray addObject:locationObject]; 
    [latitudes addObject:[NSNumber numberWithFloat: location.coordinate.latitude]]; 
    NSLog(@"here is the array for latitudes count: %d", latitudes.count); 
    NSLog(@"here is the value for first latitude: %d", latitudes[0]); 
} 

self.allPins持有CLLocationManager收到的所有位置。一旦用戶完成移動並想要保存,我運行上面的代碼片段,將軌跡加載到CoreData類中,以保存在用戶的手機上,並保存到陣列中以在線上傳數據。我想擁有一系列緯度經度等,但這並不奏效。雖然我可以將信息插入到我的CoreData對象中,但我似乎無法簡單地從CLLocation座標中提取雙/浮動(嘗試兩種方式,但我認爲它應該沒有什麼區別?)。當我運行下面的代碼,我得到了緯度陣列計數,但我得到廢話值:

2015-05-26 15:25:22.934 MileRun[665:196255] here is the value for first latitude: 426649664 

回答

1

你是不是打印的NSNumber的價值,但我相信是的地址NSNumber(有人可能糾正我在這裏,如果不是426649664是在他的日誌)。

變化NSLog(@"here is the value for first latitude: %d", latitudes[0]);

的NSLog(@ 「這裏是第一緯度值:%F」,緯度[0] .floatValue);

NSLog(@"here is the value for first latitude: %@", latitudes[0]); 

更多信息編輯: 格式說明%d是整數。您可以用對象的格式說明符打印出NSNumber,它是%@。這將允許您使用NSLog(@"number = %@", latitudes[0])進行登錄,並以此方式獲取NSNumber的值。

此外,如果有疑問,請在代碼中設置斷點並使用調試器檢查數組中的對象。

+0

感謝您的建議,但不會編譯(我只是試過)。首先緯度數組中的對象沒有floatValue屬性。 – sunny

+0

每個NSNumber都有一個'floatValue'屬性(這就是你在'latitudes'中存儲的內容)。查看我編輯的另一種方式,在NSLog中使用'%@'轉義字符打印值。 – timgcarlson

+1

術語上的小問題。 '%@'是格式說明符,不是轉義字符。反斜槓是在字符串文字中使用時的轉義字符的示例。 – rmaddy