2011-01-29 1 views
0

В моем приложении iPhone у меня есть уникальный идентификатор для проекта eah. Я хочу, чтобы когда пользователь регистрировался в уникальном идентификаторе, он был доступен на каждой странице.Как управлять NSUserDefaults при переключении между различными вкладками в панели вкладок?

Я использую NSUserDefaults для этого. Но проблема в том, что Login - это не первая страница. Поэтому, если я получаю доступ к некоторой странице, для которой требуется уникальный идентификатор, тогда отображается «unknownkey».

Как я могу обойти эту проблему?

Кроме того, я не могу добавить экран входа в систему как первый экран, так как пользователь может получить доступ к некоторым частям без входа.

ответ

1

попробовать что-то вроде

if (![[NSUserDefaults standardUserDefaults] objectForKey: @"uniqueid"]) { 
    //...user is not logged in.. 
} else { 
    //...user is logged in... 
} 
+0

Но первый раз, если пользователь не вошел в систему, и если пользователь находится на странице, где нет определения «uniqueid». Затем он дает ошибку: valuefor и вылетает. –

+0

objectForKey возвращает nil, если ключ не установлен, см.: Http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html –

+0

Другим решением будет для хранения другого уникального идентификатора в NSUserDefaults до того, как пользователь выполнит вход в систему, рассматривая пользователя как неавторизованный, когда появляется этот специальный идентификатор –

0

Я думаю, что это проблема дизайна, а не проблема программирования?

Возможно, вы, возможно, переместите свой экран входа в экран запуска или оставьте панель вкладок так, как только пользователь войдет в систему, или даже перепроектирует все по-разному.

+0

Я отредактировал свой вопрос. поэтому, пожалуйста, проверьте раздел «Изменить». –

+0

Мой ответ не меняется. Вы должны переделать свой дизайн. – pt2ph8

0

Если Войти является необходимым для всего (например, ваше приложение клиент Dropbox), представить регистрационную ViewController модально при запуске приложения.
И не увольняйте его, пока не получите успешный вход в систему.

0

В вашем методе viewDidLoad RootViewController вам необходимо проверить сохраненный NSUserDefault с помощью инструкции IF. Легко.

-(void)viewDidLoad { 

    if(![[NSUserDefaults standardDefaults] objectForKey:@"uniqueid"]) { 
    // here you'll want to present a view modally inside a new navigation controller. 

    LoginViewController *lvc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; 

    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:lvc]; 

    [self.navigationController presentModalViewController:controller animated:YES]; 

} else { 

    // this is where you'd set up the client if the user is already logged in. 

    } 
}