Как позвонить конкретному пользователю по умолчанию в iOS - PullRequest
1 голос
/ 09 ноября 2011

Я пытаюсь вызвать конкретную настройку, сохраненную в комплекте настроек моего приложения для iphone. Я хочу сделать заявление if на основе того, что было сохранено. Мой код в файле реализации выглядит так:

branchMatch = [[NSString alloc] initWithString:[defaults objectForKey:@"branch"]];

Объект в файле настроек - это просто название конкретной ветви. Я продолжаю получать ошибку SIGABRT, но я не уверен, почему.

Ответы [ 4 ]

6 голосов
/ 09 ноября 2011

Во-первых, нет необходимости инициализировать строку с другой строкой. Предполагая, что branchMatch является NSString*, будет достаточно следующего:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
branchMatch = (NSString*)[defaults objectForKey:@"branch"];

Во-вторых, проверьте, возвращает ли objectForKey nil. Ваш SIGABRT, скорее всего, из-за ноля там.

РЕДАКТИРОВАТЬ: эти значения не присутствуют в коллекции, пока пользователь не откроет Настройки и не изменит их явно. Вы должны указать разумное значение, если настройка не найдена (это nil). Те, что в комплекте настроек, не применяются автоматически; они предназначены только для того, чтобы приложение «Настройки» правильно инициализировало пользовательский интерфейс.

1 голос
/ 09 ноября 2011

Сделайте это вместо:

NSUserDefault* defaults = [NSUserDefauls standardUserDefaults];
NSString* setting = [defaults objectForKey:@"branch"];
if (setting)
    // Do what needed if branch is set
else
    // Do what needed if branch has never been set
1 голос
/ 09 ноября 2011

Вы проверяете, что вызов objectForKey не возвращает nil?

0 голосов
/ 18 ноября 2011

После долгих усилий я понял, что мне нужно загружать пользовательские настройки по умолчанию из класса делегатов вместо ViewController.

Спасибо за все вводимые данные

...