6

我正在创建一个可以管理用户并登录他们的 iOS 应用程序。

我想保留每个用户的用户数据设置,但我不确定每个用户保存此设置的最佳方法是什么。

我应该将数据保存到 xml 文件或 NSUserDefaults 中,还是将它们保存到我的 Parse 云数据库中?

我只想在加载视图时保存用户属性列表,但我必须考虑到我的应用程序必须为当前用户加载正确的参数。

例如:

用户:彼得 trackingSwitchEnabled:是

用户:莫莉 trackingSwitchEnabled:否

用户:保罗 trackingSwitchEnabled:是

4

5 回答 5

10
  • 除非您存储敏感信息,否则不要使用钥匙串。
  • 不要使用 Core Data 或 XML(除非它是 plist),因为它需要大量工作。
  • 除非您有理由,否则不要使用 Parse,因为您的用户数据将取决于您为帐户付费以及用户是否具有连接性。
  • 将 NSUserDefaults 与 key=user, value=JSON 字符串一起使用。您可以将其解析为/从对象解析。
  • 如果您非常懒惰,请使用复合键,例如:key="Mary|tracking", value=YES。

额外的 ASCII 艺术!

                           NSUserDefaults   plist    Core Data   SQList
    Full text search           ✘              ✘          ✘         ✔
    Complex search             ✘              ✘          ✔         ✔
    Binary data                ✘              ✘          ✔         ✔
    Allows complex data        ★              ★★        ★★★★     ★★★★
    Performance                ★              ★         ★★★      ★★★★
    Learning curve             ★              ★★        ★★★      ★★★★
于 2013-09-26T16:11:26.890 回答
4

如果你想使用 NSUserDefaults,你应该使用initWithSuiteName:创建不同的数据库。

[[NSUserDefaults alloc] initWithSuiteName: USER_IDENTIFY]

于 2015-08-25T10:44:27.783 回答
0

为了保存用户凭据,我建议使用Apple 的KeychainItemWrapper类:

您可以使用它来保存这样的值(例如使用电子邮件/密码文本字段)

        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 :)

所以,是的,基本上解释了史蒂夫所说的:)

于 2013-09-26T10:10:21.370 回答
0

这是一个很好的应用程序首选项和设置指南。

关于首选项和设置

简而言之,您应该使用 NSUserDefaults。

于 2013-09-26T09:02:37.220 回答
0

使用 NSUserDefault 不是保存用户登录详细信息的好主意。最好使用动态 plist或 xml。请阅读这篇文章以获得另一种更好的方式。

于 2013-09-26T09:16:32.143 回答