91

アプリケーションの がロードされたときにrootViewController、ユーザーのログイン資格情報が に保存されているかどうかを確認できるようにしたいと考えていますNSUserDefaults

基本的に、ユーザーがアプリケーションをロードし、ログイン資格情報が保存されていない場合、amodalAlertViewがプッシュされ、ユーザーは資格情報を適切に保存できます。UITextFieldこれにより、これらの文字列がそれぞれのNSUserDefaultオブジェクトに保存されます。ただし、この保存が完了するNSUserDefaultと、ブール値のオブジェクトを作成して値を「はい」に変更できる可能性はありますか?

つまり、ブール値はすでに no に設定されており、ユーザーがログイン資格情報を保存すると、ブール値も yes に変更されますか?

4

6 に答える 6

269

以下を使用してブール値を設定できます。

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"logged_in"];
[[NSUserDefaults standardUserDefaults] synchronize];

次のコードを使用して読み取ります。

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"logged_in"]) {
    [self displayLogin];
} else {
    [self displayMainScreen];
}
于 2010-10-01T16:34:44.707 に答える
10

NSUserDefaultsと呼ばれるメソッドがありregisterDefaults:ます。このメソッドを使用して、アプリケーションの「デフォルト デフォルト」を設定します。基本的に、NSDictionaryデフォルトのキーと値を含む を作成し (この場合、「保存された資格情報」キーの場合は NO)、 を使用して登録しregisterDefaults:ます。これ+ (void)initializeは、デフォルトが必要になる前に確実に登録されるように、アプリ デリゲートのメソッドでよく行われます。これらの値は、アプリがそれらを置き換えていない場合にのみ使用されます。つまり、探しているキーがアプリケーション ドメインにない場合、つまり、ユーザーのデフォルトがユーザーの .plist ファイルから読み取られた場合を除き、これらのキーは使用されません。

一方、ログイン資格情報を確認して、不足している場合はアラートをポップアップ表示することもできます。これにより、ブール値をログイン資格情報と同期させておく必要がなくなります。後で「ログイン資格情報の削除」機能を提供する場合、ブール値を NO に戻すことを覚えておく必要はありません。ログイン資格情報がユーザーのデフォルトに保存されている場合は、次のようにします。

NSString *userID = [[NSUserDefaults standardUserDefaults] stringForKey:@"userID"];
NSString *password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"];
if (userID != nil && password != nil) {
    // Code to log user in
} else {
    // Code to pop up an alert
}
于 2010-10-01T16:41:58.167 に答える
2

最初に に設定する必要はありませんNO。代わりに、キーが設定されているかどうかを確認できます。そうでない場合、および資格情報が完全であるとアプリが判断した場合は、資格情報を作成して に設定しYESます。

別の質問に対する私の回答を確認して、私が通常これをどのように行っているかを確認してください。

于 2010-10-01T16:37:48.413 に答える