我正在创建一个iOS应用程序,可以管理用户并登录。
我想保留每个用户的用户数据设置,但我不确定每个用户保存此设置的最佳方法是什么。
我应该将数据保存到xml文件,还是NSUserDefaults,甚至将它们保存到我的Parse Cloud数据库中?
我只想在加载视图时保存用户属性列表,但我必须考虑到我的应用必须为当前用户加载正确的参数。
例如:
用户:彼得 trackingSwitchEnabled:是
用户:莫莉 trackingSwitchEnabled:NO
用户:保罗 trackingSwitchEnabled:是
答案 0 :(得分:10)
Bonus ASCII art!
NSUserDefaults plist Core Data SQList
Full text search ✘ ✘ ✘ ✔
Complex search ✘ ✘ ✔ ✔
Binary data ✘ ✘ ✔ ✔
Allows complex data ★ ★★ ★★★★ ★★★★
Performance ★ ★ ★★★ ★★★★
Learning curve ★ ★★ ★★★ ★★★★
答案 1 :(得分:0)
答案 2 :(得分:0)
使用NSUserDefault不是保存用户登录详细信息的好主意。 最好使用动态plist 或xml。 请阅读this以获得更好的方法。
答案 3 :(得分:0)
为了保存用户凭据,我建议使用apple中的KeychainItemWrapper类:
您可以使用它来保存这样的值(例如使用电子邮件/密码textFields)
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"myAppLogin" accessGroup:nil];
[keychainItem setObject:txtPassword.text forKey:(__bridge id)(kSecValueData)];
[keychainItem setObject:txtEmail.text forKey:(__bridge id)(kSecAttrAccount)];
}
然后,当你想从钥匙串中取回价值时,你只需:
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"myAppLogin" accessGroup:nil];
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc]init];
[myDictionary setObject:[keychainItem objectForKey:(__bridge id)(kSecAttrAccount)] forKey:@"email"];
[myDictionary setObject:[keychainItem objectForKey:(__bridge id)(kSecValueData)] forKey:@"password"];
另外,不要忘记从我发布在顶部的developer.apple.com链接下载KeychainItemWrapper.h和.m。
所以是的,基本上解释了史蒂夫说的话:)。