分解 iOS 个应用中不同存储方法的用例

breaking down use cases of different storage methods in iOS apps

我正在学习构建 iOS swift 应用程序,如果您能指导我的应用程序的不同部分使用哪些存储选项,我将不胜感激。也许其他专业应用程序如何构建其存储的示例也会有所帮助。

具体来说,我认为我的选择是

  1. 一个独立的MySQL数据库
  2. 亚马逊 s3
  3. 核心数据
  4. nsuserdefaults
  5. 钥匙串

该应用程序允许用户将 see/stream/download/upload 视频和照片添加到他们的 account/app 以及进行所有正常投票、自定义用户偏好等。不过,这是一个任意的应用程序示例。社交媒体应用程序存储对我来说也是一个很好的案例研究。

鉴于要实现的功能多种多样,我很好奇存储体系结构在维护会话、持久性和安全性方面的最佳实践。

现在我所实现的只是让用户创建一个帐户并通过向 MySQL 数据库发出 http 请求来登录。我从我的 s3 上传和下载媒体。每次从数据库中重新提取用户数据时。

我是否应该 cache/archive 填充到 coredata 中以使其对用户来说更快?

如果用户希望应用程序 "remember me",该数据存储在哪里?

我应该用钥匙串做些什么,而不是直接调用 http 登录吗? (钥匙串是我唯一尚未在该列表中实现的东西。其余的我已经独立搞砸了)

我还听说 nsuserdefaults 仅用于用户首选项。

谢谢大家的建议。

是您应该使用核心数据以获得更好的性能。 核心数据将是完成这项工作的更好工具:

->缓存索引文件与实际存储的数据不匹配;

->普通查询;

->漂亮而简单的面向对象代码。

NSUserDefaults

如果你想添加记住我选项,你必须使用 NSUserDefaults。它将存储在 plist 文件中。如需更多信息,您应该浏览 this.

钥匙串

密码和密钥等敏感数据应存储在钥匙串中。 Apple 的 Keychain Services Programming Guide 指出“keychain 是一个加密的容器,它包含多个应用程序和安全服务的密码。Keychain 是安全的存储容器,这意味着当 keychain 被锁定时,没有人可以访问其受保护的内容”。此外,在 iOS 中,每个应用程序只能访问自己的钥匙串项。 您通过传递要查找或创建的键值对字典与钥匙串交互。每个键代表一个搜索选项或钥匙串中项目的一个属性。