iPhone - 从文件中保存和加载用户的登录信息
Posted
技术标签:
【中文标题】iPhone - 从文件中保存和加载用户的登录信息【英文标题】:iPhone - Saving and Loading a user's login information from file 【发布时间】:2011-04-14 04:18:52 【问题描述】:大家好,我在尝试保存用户的登录名(电子邮件)和密码(字符/数字)时遇到了一点问题。这些都是 NSStrings 的 UITextFields。
我现在在视图的末尾设置了它,然后它被解雇为
[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)?任何建议都会很棒!
亚历克斯
【问题讨论】:
【参考方案1】:您不应将用户的凭据以纯文本形式存储在文件中。如果手机丢失或被黑客入侵,它可以很容易地被读取。
更好的方法是将信息安全地存储在 iPhone 钥匙串中。这将为您处理加密/解密,并且比您可能自己编写的更安全。
SFHFKeychainUtils 是一个可以让钥匙串的使用变得更容易的库。这将为您提供适用于模拟器和设备的抽象。
【讨论】:
我将不得不对此进行调查,看看哪个才是真正的最佳选择。 它可能不是最漂亮的选择,但它是 Apple 推荐的这种存储方式。 如果不使用这个方法会被应用商店拒绝吗? 不,只是推荐,不是要求。【参考方案2】:您可能想查看 NSUserDefaults,但要回答您的问题,您可能需要指定路径。
获取路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/Login", docDir];
保存:
[em writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
加载:
NSString *em = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];不要忘记 [em release] 以避免内存泄漏!
【讨论】:
但正如 Ben Scheirman 所说,将用户登录信息存储在钥匙串中要好得多。以上是关于iPhone - 从文件中保存和加载用户的登录信息的主要内容,如果未能解决你的问题,请参考以下文章