4

ログイン時に、ユーザー名とパスワードの正しい組み合わせで基本的なユーザー情報(firstName、lastName、userType、companyIDなど)が返されるアプリを作成しています。

ユーザー固有のデータを取得するには、アプリケーション全体でこれらの値と文字列が必要になります。

ログイン時にこれらすべての値と文字列をNSObjectまたはNSDataサブクラスに保存して、後で呼び出して必要なアイテムを取得できるようにすることはできますか?これどうやってするの?またはより良い代替手段はありますか?

4

3 に答える 3

6

あなたが言うように、成功したログインから返されたデータを保存するだけの場合は、名、姓などです。私は NSUserDefaults を使用します。ユーザー名やパスワードなどの機密情報、または追加の機密性が必要なものを保存する場合は、キーチェーンを使用することをお勧めします.

于 2013-03-07T17:12:47.897 に答える
4

安全なので、キーチェーンを使用します。このSTKeychainをチェックしてください

于 2013-03-07T17:13:10.643 に答える
3

を使用できますNSUserDefaults。ユーザーモデルを作成します。NSCodingプロトコルを実装します。保存中にアーカイブし、からフェッチしながらアーカイブを解除しNSUserDefaultsます。

@interface User: NSObject<NSCoding>

    @property (nonatomic, copy)   NSString *firstName;
    @property (nonatomic, copy) NSString *lastName;

    - (void)save;
    + (id)savedUser;

//User.m

#define kSavedUser @"SavedUser"

#pragma mark - Encoding
- (void)encodeWithCoder:(NSCoder *)encoder
{
    [encoder encodeObject:self.firstName forKey:@"FirstName"];
    [encoder encodeObject:self.lastName forKey:@"LastName"]

}

#pragma mark - Decoding
- (id)initWithCoder:(NSCoder *)decoder
{
    self = [super init];
    if (self)
    {
        _firstName   = [decoder decodeObjectForKey:@"FirstName"];
        _lastName   = [decoder decodeObjectForKey:@"LastName"];

    }
    return self;
}


-(void)save
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self];
    [defaults setObject:data forKey:kSavedUser];
    [defaults synchronize];
}

+ (id)savedUser
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [defaults objectForKey:kSavedUser];
    if (data)
    {
        return [NSKeyedUnarchiver unarchiveObjectWithData:data];
    }
    return nil;
}

+ (void)clearUser
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults removeObjectForKey:kSavedUser];
    [defaults synchronize];
}

これで、のインスタンスを作成できます

User *user = [[User alloc]init];
user.firstName = @"";
user.lastName = @"";
[user save];

取得したいとき

User *user = [User savedUser];

編集:データをクリアしたい場合は、静的メソッドを呼び出して保存されたユーザー情報を削除します

[User clearUser];
于 2013-03-07T17:24:27.163 に答える