Вернуть значение с плавающей запятой из настройки plist

Я пытался вытащить значение «tempF» из /var/mobile/Library/Preferences/com.skylerk99.snappref.plist, чтобы вернуть значение с плавающей запятой.

-(float) temperatureDegFahrenheit {
    NSDictionary *pref = [[NSDictionary alloc]initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.sky.snap.plist"];
    NSString *tempF;
    if( [[pref objectForKey:@"showF"] boolValue] ) {
        return tempF;
    }
    else {
        return %orig;
    }
}

но я продолжаю получать ошибку

cannot initialize return object of type 'float' with an lvalue of type 'NSString *'
   return tempF;

Каков наилучший способ сделать это, потому что я, очевидно, не знаю?


person Community    schedule 09.08.2014    source источник
comment
Как насчет использования floatValue вместо boolValue?   -  person spacebiker    schedule 10.08.2014
comment
Ваш код кажется неполным. Это действительно все?   -  person Atomix    schedule 10.08.2014
comment
Я не могу понять, почему так много программистов, которые явно никогда не посещали вводный курс программирования, считают хорошей идеей начать с настройки джейлбрейка на iOS. Это продвинутая тема программирования. Непонимание того, почему вы не можете присвоить строку поплавку, так же просто, как вы понимаете.   -  person Nate    schedule 10.08.2014


Ответы (1)


Обновление:

Основываясь на приведенном ниже обсуждении, давайте предположим, что температура вводится через UITextField, называемое TemperatureTextField. Вы можете получить плавающее значение входной температуры следующим образом:

[[temperatureTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] floatValue];


Функция ожидает, что вы вернете float, но tempF — это NSString *.

Чтобы разобрать значение float из NSString, попробуйте это (кстати, я предполагаю, что вы не показали весь свой код, иначе ваш tempF никогда не был назначен):

[tempF floatValue];
person Peter Pei Guo    schedule 09.08.2014
comment
хорошо, я подумал, что мне нужно больше. Как мне присвоить tempF. потому что теперь я получаю сообщение об ошибке с использованием необъявленного идентификатора 'tempF'. Извините, если плохое место или глупый вопрос, просто пытаюсь изучить и понять это. - person ; 10.08.2014
comment
Я предполагаю, что showF в plist определяет, показывать ли температуру в C или F, и это не значение самой температуры. Скажи мне, откуда будет браться температура? например, через пользовательский ввод? Расскажите нам, что вы пытаетесь сделать, и мы можем предоставить вам более конкретную помощь. - person Peter Pei Guo; 10.08.2014
comment
На панели настроек есть поле ввода числа, назначенное клавише tempF, а также переключатель включения, назначенный на showF. Таким образом, надежда заключалась в том, что если для showF установлено значение YES, то -(float) TemperatureDegFahrenheit вернет значение tempF. - person ; 10.08.2014