iPhone - сохранение и загрузка регистрационной информации пользователя из файла - PullRequest
2 голосов
/ 14 апреля 2011

Эй, ребята, у меня возникла небольшая проблема при попытке сохранить логин пользователя (адрес электронной почты) и пароль (символы / цифры).Это оба UITextFields NSStrings.

Я настроил его прямо в конце представления, прежде чем оно будет отклонено как

[email writeToFile:@"Login" atomically:YES encoding:NSUTF8StringEncoding error:&error];
[password writeToFile:@"Password" atomically:YES encoding:NSUTF8StringEncoding error:&error];

Однако я не уверен, что делатьо загрузке их, когда представление загружено.Я попытался сделать это в начале загрузки представления:

NSString *email;
NSString *password;
NSError *error;
NSString *em = [[NSString alloc] initWithContentsOfFile:@"Login" encoding:NSUTF8StringEncoding error:&error]; 
NSString *pass = [[NSString alloc] initWithContentsOfFile:@"Password" encoding:NSUTF8StringEncoding error:&error];
if (error == nil) {
   userEmail.text = em;
   userPassword.text = pass; 
}

email = userEmail.text;
password = userPassword.text;

Однако я не могу получить данные в этих двух файлах ... это потому, что мне нужен полный путь к файлу?Кроме того, есть ли способ сохранить их оба в один файл (NSMutableDictionary)?Любой совет был бы великолепен !!

Алекс

Ответы [ 2 ]

22 голосов
/ 14 апреля 2011

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

Гораздо лучший подход - надежно хранить информацию в связке ключей iPhone. Это будет обрабатывать шифрование / дешифрование для вас и будет более безопасным, чем то, что вы, вероятно, напишите сами.

Одна библиотека, которая облегчит работу с цепочкой для ключей - SFHFKeychainUtils . Это даст вам абстракцию, которая работает как на симуляторе, так и на устройстве.

1 голос
/ 14 апреля 2011

Возможно, вы захотите взглянуть на NSUserDefaults, но, чтобы ответить на ваш вопрос, вы можете указать путь.

Получить путь:

<code>
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/Login", docDir];

Сохранить:

<code>
[em writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];

Нагрузка:

NSString *em = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

Не забудьте [em release], чтобы избежать утечек памяти!

...