【问题标题】:Save Username & Pass Objective C iPhone保存用户名并通过 Objective C iPhone
【发布时间】:2011-03-17 10:46:34
【问题描述】:

我有一个文本字段,

号码和密码

我不知道如何保存这些设置,然后在应用程序开始检查它们是否已设置时读取它们。

谢谢

梅森

【问题讨论】:

    标签: objective-c database iphone save


    【解决方案1】:

    保存:

    [[NSUserDefaults standardUserDefaults] setValue:_email forKey:@"email"];
    [[NSUserDefaults standardUserDefaults] setValue:_password forKey:@"password"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    

    阅读:

    _email = [[NSUserDefaults standardUserDefaults] stringForKey:@"email"];
    _password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"];
    

    在你的情况下:

    [[NSUserDefaults standardUserDefaults] setValue:Number.text forKey:@"Number"];
    

    还有:

    NSString * number = [[NSUserDefaults standardUserDefaults] stringForKey:@"Number"];

    “键”通常是硬编码的,其作用类似于存储中事物的“变量名”(典型的名称/值对,如字典)。

    检查值是否已设置;看完后:

    if (number) ...

    【讨论】:

    • 所以对于名为 Number 的文本字段,这是一个 iboutlet,我会使用这个:[[NSUserDefaults standardUserDefaults] setValue:_number forKey:Number.text]; [[NSUserDefaults standardUserDefaults] setValue:_password forKey:Password.text]; [[NSUserDefaults standardUserDefaults] 同步];
    • 通常“键”是硬编码的...这有点像您存储的值的“变量名”...像这样... [[NSUserDefaults standardUserDefaults] setValue:Number .text forKey:@"Number"];这有意义吗?
    • 这可行,但不安全。您应该将敏感信息存储在钥匙串中。
    • 哦,我明白了,我需要等待 3 分钟才能接受答案,所以我不会忽略 btw :)
    • @sw12345 您可以轻松破解某人的 iPhone 备份并从明文 NSUserDefaults 文件中删除密码。使用钥匙串。 这就是它的用途
    【解决方案2】:

    敏感信息应存储在钥匙串中,即设备上的加密安全位置。如果您将用户名和/或密码保存在 NSUserDefaults 中,则将它们保存为纯文本,这本质上是不安全的。

    互联网上有很多关于如何在 iPhone 上使用钥匙串的示例,包括在您的代码中使用的简单包装器。例如,下面是 Github 上的一些非常好的代码,它非常容易:

    http://github.com/ldandersen/scifihifi-iphone/tree/master/security

    【讨论】:

    • 比我的答案更好。谢谢(你的)信息。当然,任何开发人员都应该确定他们自己的应用程序需要多少安全性,并了解使用钥匙串的缺点(模拟器支持、设置应用程序支持、增加的复杂性和开发时间)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多