У вас есть 3 основных варианта сохранения данных для входа в систему; Настройки, Основные данные и SqlLite. Только для имени пользователя и пароля вам нужно использовать настройки, поскольку накладные расходы двух других опций будут чрезмерными, и они чаще используются для реляционных данных.
Чтобы использовать настройки, вам необходимо загрузить их, когда контроллер приложения инициализируется путем вызова;
+ (void) loadDefaultSettings {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *pListPath = [path stringByAppendingPathComponent:@"Settings.bundle/Root.plist"];
NSDictionary *pList = [NSDictionary dictionaryWithContentsOfFile:pListPath];
NSMutableArray *prefsArray = [pList objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *regDictionary = [NSMutableDictionary dictionary];
for (NSDictionary *dict in prefsArray) {
NSString *key = [dict objectForKey:@"Key"];
if (key) {
id value = [dict objectForKey:@"DefaultValue"];
[regDictionary setObject:value forKey:key];
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:regDictionary];
}
Затем вы можете сохранить свое имя пользователя и пароль с помощью вызова метода this;
+ (void) storePersistedLogin:(NSString *)uid withPassword:(NSString *)pswd {
[[NSUserDefaults standardUserDefaults] setObject:uid forKey:@"UID"];
[[NSUserDefaults standardUserDefaults] setObject:pswd forKey:@"PSWD"];
}
Вы можете заполнить входы UITextField, используя следующий метод;
+ (void) populatePersistedLogin:(UITextField **)uid andPassword:(UITextField **)pswd {
[*uid setText:(NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:@"UID"]];
[*pswd setText:(NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:@"PSWD"]];
}
У меня есть эти открытые методы в отдельном классе SettingsUtils, поэтому я могу убедиться, что мои ключи совпадают. Вместо этого вы можете также объявить ключи как объекты NSString, чтобы уменьшить вероятность их неправильного набора.