【问题标题】:Best way to store user information for my iOS app为我的 iOS 应用存储用户信息的最佳方式
【发布时间】:2013-06-19 19:39:18
【问题描述】:

你建议什么样的数据库?我想存储用户电子邮件、用户名、密码和其他一些随机信息。它不必花哨。只是一个简单的数据库。有免费的选择吗?

【问题讨论】:

  • 为什么要存储密码?如果是的话,看看使用钥匙串。
  • 好的,但是如果我想存储用户创建的内容怎么办。例如,如果我让他们选择一个介于 1 和 10 之间的数字,并且我希望在登录会话之间始终记住该数字。我需要将号码存储在数据库中吗?
  • 您可以将其存储在任何地方。您的问题是关于应该安全的用户信息。
  • 请给我一个例子来定义任何地方。你的意思是在数据库中?我的问题是关于存储电子邮件、用户名、密码和其他一些随机信息。

标签: ios database store


【解决方案1】:

将其存储在 plist 中。如果您谈论的是与一个或几个用户有关的数据,那可能是一件容易的事。 here 是一个简单的例子。

【讨论】:

  • 感谢您的回答。我想我实际上需要一个数据库,以便用户可以看到有关彼此问题答案的某些信息。关于 ios dev 的最佳记录和支持数据库的任何建议?
【解决方案2】:

Wain 是对的,但我认为由于您想存储少量数据以供进一步使用,最有效的方法是使用NSUserDefault

NSUserDefault 将数据存储在NSDictionary 类型的事物中。

我认为这是你必须采取的步骤:

1- 检查数据是否存在。我的意思是如果用户在您的应用程序最后一次运行时选择了该数字。所以在viewDidLoad方法中:

NSMutableDictionary *userDefaultDataDictionary =  [[[NSUserDefaults standardUserDefaults] dictionaryForKey:ALL_DATA_KEY] mutableCopy];

if (userDefaultDataDictionary) {
   // so the dictionary exists, which means user has entered the number in previous app run
   // and you can read it from the NSDictionaty:
   if(userDefaultDataDictionary[LABLE_KEY]){
        //and store it
    }
}

2 - 您可以实现一些方法,例如 syncronize,以便在每次更改时将数据存储在 NSUserDefault

- (void) synchronize
{
    NSMutableDictionary *dictionaryForUserDefault = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:ALL_DATA_KEY] mutableCopy];
    if(!dictionaryForUserDefault)
        dictionaryForUserDefault = [[NSMutableDictionary alloc] init];
    dictionaryForUserDefault[LABLE_KEY] = //data you want to store

    [[NSUserDefaults standardUserDefaults] setObject:dictionaryForUserDefault forKey:ALL_DATA_KEY];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

附:并且不要忘记#define您的字典键:

#define LABLE_KEY @"Lables"
#define ALL_DATA_KEY @"AllData"

【讨论】:

  • 谢谢。但是如果我希望用户能够看到彼此的信息,我不需要数据库。比如如果用户 a 想知道用户 b 为某事放了什么,那必须存储在数据库中,对吧?
  • 不客气。我没有在这里完全得到你的问题。用户 A 和 B 使用相同的设备还是不同的设备?我的意思是,如果您想将数据存储在一台且仅一台设备中,则可以使用NSUserDefault。或者例如,如果您希望用户通过 Internet 或类似的方式进行交互?您能否提供有关您的问题的更多信息?
  • 用户 a 和 b 使用不同的设备。
  • 你希望他们如何互动?
  • 只是一个简单的例子:想象一个简单的应用程序,人们登录并从 1-10 中选择一个数字。我希望能够存储每个用户选择的内容,以便任何用户都可以查看每个选择的数字的统计信息。这个应用的一个例子是用户可以在选择他们的号码后点击“显示统计信息”,他们可以看到有多少人选择了每个号码。
【解决方案3】:

用户信息需要存储在钥匙串中以保证其安全。

任何其他信息都可以存储在以下任何一个中:

  1. 用户默认值NSUserDefaults
  2. 磁盘上的文件(可能是 plist)
  3. 数据库Core Data(技术上只是磁盘上的一个文件)

您选择哪一种取决于数据是什么、有多少以及您需要什么样的访问权限。

如果您的数据很小并且被用户选择作为某种设置,那么用户默认值是有意义的,并且是您实施的最低成本。

要使用数据库,请查看Core Data intro

【讨论】:

  • 非常感谢,很好的答案。虽然我认为我需要一个数据库,因为我希望其他用户能够看到彼此的信息。我应该在我的问题中更清楚地说明这一点。
【解决方案4】:

既然你说数据库,那就存储在Sqlite中。 xcode 中已经为它提供了一些东西。

整个数据库都包含在一个文件中,如果需要,可以随意移动。

这里有更多关于如何在您的应用中使用的information

【讨论】:

  • 谢谢,这是我正在寻找的答案类型。我的问题应该更清楚。我真的很想知道是否有一种通用的或得到良好支持/记录的方式来为这样的数据库中的用户存储信息。
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多