2015-05-26 1 views
1

Я делаю что-то глупое, но не уверен, что. Вот мой код:Вставка CLLocation широта из координаты в NSMutable Array

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 (@ "здесь значение для первой широты:% е", широты [0] .floatValue);

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

ПОДРОБНЕЕ EDIT: спецификатор формата %d для целых чисел. Вы можете распечатать NSNumber с помощью спецификатора формата для объектов, который равен %@. Это позволит вам регистрироваться с NSLog(@"number = %@", latitudes[0]) и получить значение для NSNumber таким образом.

Кроме того, если вы сомневаетесь, установите контрольную точку в своем коде и проверите объекты в массиве с помощью отладчика.

+0

Спасибо за предложение, но это даже не компиляция (я просто попробовал). С одной стороны, объекты в массиве широт не имеют свойства floatValue. – sunny

+0

Каждый NSNumber имеет свойство 'floatValue' (это то, что вы храните в' широтах'). См. Мое редактирование для другого способа печати значения с помощью escape-символа '% @' в 'NSLog'. – timgcarlson

+1

Незначительный nitpick по терминологии. '% @' - спецификатор формата, а не escape-символ. Обратная косая черта является примером escape-символа при использовании в строковом литерале. – rmaddy

Смежные вопросы