2009-12-21 2 views
0

Я не могу прожить другой день, не зная, почему это происходит. У меня есть приложение iPhone, используя CoreLocation и вот вопрос:IPhone Float to String issue

GPSLocation.m - посылает длинный/Lat координаты, которые являются поплавки к классу UserSettings.m (который одноэлементно класс)

_

UserSettings.m - Тогда отливать значения в предварительно определенные строки из поплавок

например. strLongitude = [NSString stringWithFormat: @ "% f", paramLong];

Я могу проследить строку только штрафом NSLog (@ "Строка долготы% @", strLongitude);

Некоторые заметки о strLongitude

  1. находится в файле заголовка
  2. свойство определяется как (неатомической, сохранить)
  3. синтезируется

Теперь проблема: Когда мне нужна эта переменная в другом классе, я могу использовать один из двух способов ее получения. Либо с помощью getter [UserSettings getLongitude], либо доступа к свойству [UserSettings strLongitude]

Затем, когда я прослеживаю эту строку, иногда я получаю ошибку badaccess или случайный мусор. Если я прослежу строку как float% F, она работает нормально.

Почему это происходит? Строка по умолчанию возвращается к исходному типу данных переменной.

Любая помощь будет оценена по достоинству.

ответ

2

strLongitude, возможно, потребуется сохранить.

+0

это! @property (nonatomic, keep) NSString * strLongitude; –

+1

Но вам нужно использовать self: self.strLongitude = [NSString stringWithFormat: @ "% f", paramLong]; для вызова сеттера (который сохраняет его). Просто для ударов, попробуйте: strLongitude = ...; [strLongitude keep]; и посмотреть, есть ли разница. – Jeff

+0

BINGO! Я не вызывал сеттера. self.strLongitude работал отлично. Спасибо чувак! –

1

Похоже, что какой-то код случайно вызывает установщик строк с аргументом float.

1

Я понимаю, что это прямо не отвечает на ваш вопрос, но зачем хранить координаты в строках?

Почему бы не сохранить их, как, а, поплавки? Например,

@interface UserSettings 
{ 
    float longitude; 
} 

@property (nonatomic, assign) float longitude; 

@end 

Кроме того, ваши UserSettings класса звучит очень похоже на NSUserDefaults ...

+0

Я не могу сделать POST для веб-сервисов с плавающей точкой. Поэтому, прежде чем я сделаю этот вызов, я привожу float в класс im, с помощью которого веб-службы вызовут, а затем преобразуют его в строку. Да, я могу заменить класс userSettings NSUserDefaults, но это не отвечает на мой вопрос. Это низкоуровневое программирование является новым для меня, и я пытаюсь понять, почему эта проблема возникает. –

+0

До сих пор я определил, что кастинг относительно класса, в который я его ввел. Если я попытаюсь получить доступ к переменной из другого класса, она не сохранит свой тип данных каста, но вернется к ее оригиналу. Кто знает, я все испорчен. Я просто хочу знать, почему. –