2014-09-04 4 views
0

Мой проект загружает набор параметров, который сохраняет несколько адресов хоста, переменную, представляющую адрес хоста, измененную по предпочтению пользователя, а в приложении - я устанавливаю адрес хоста в качестве глобальной переменной через ключевое слово #define.Изменение глобальной переменной в соответствии с значением в наборе параметров

Переменная, определяемая #define, не может быть изменена, так что насчет extern?

Теперь я хочу изменить глобальную переменную в соответствии со значением в наборе параметров, как я могу реализовать?

Заранее благодарен!

+0

Что платформы ?? – trojanfoe

+0

@trojanfoe Я поставил вопрос 'цель-c'. – Allen

+0

Это язык; не платформа. – trojanfoe

ответ

0

Использование одного объекта, содержащего настройки, отображаемые как свойства, было бы лучше, однако это должно быть просто перезаписью того, что у вас есть со значениями от NSUserDefaults.

Так что у вас есть Settings.h:

extern NSString *hostAddress1; 
extern NSString *hostAddress2; 
extern NSString *hostAddress3; 

и Settings.m:

NSString *hostAddress1 = nil; 
NSString *hostAddress2 = nil; 
NSString *hostAddress3 = nil; 

, то они могут быть установлены так просто, как:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
hostAddress1 = [defaults objectForKey:@"hostAddress1"]; 
hostAddress2 = [defaults objectForKey:@"hostAddress2"]; 
hostAddress3 = [defaults objectForKey:@"hostAddress3"]; 
0

#define s используются препроцессором только, поэтому ответ tl; dr будет нет.

Но в более подробном ответе вы могли бы сделать что-то вроде ответа троянфи. И вы все еще могли бы дополнить его, изменив существующую #define использовать эти глобальные переменные:

#define SERVER_HOST hostAddress1

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