我正在学习构建 iOS swift 应用程序,如果您能指导我为应用程序的不同部分使用哪些存储选项,我将不胜感激。也许其他专业应用程序如何构建其存储的示例也会有所帮助。
具体来说,我认为我的选择是
- 一个独立的MySQL数据库
- 亚马逊 s3
- 核心数据
- nsuserdefaults
- key 扣
该应用程序允许用户查看/流式传输/下载/上传视频和照片到他们的帐户/应用程序,以及进行所有正常投票、自定义用户偏好等。不过,这是一个任意的应用程序示例。社交媒体应用程序存储对我来说也是一个很好的案例研究。
考虑到要实现的各种功能,我很好奇存储架构在维护 session 、持久性和安全性方面的最佳实践。
现在我所实现的只是让用户创建一个帐户并通过向 MySQL 数据库发出 http 请求来登录。我从我的 s3 上传和下载媒体。每次从数据库中重新提取用户数据。
我是否应该将内容缓存/归档到 coredata 中以使其对用户来说更快?
如果用户希望应用“记住我”,该数据存储在哪里?
我应该用钥匙串(keychain)做些什么,而不是直接调用 http 登录吗? (钥匙串(keychain)是我唯一尚未在该列表中实现的东西。其余的我已经独立搞砸了)
我还听说 nsuserdefaults 仅用于用户首选项。
谢谢大家的建议。
最佳答案
是 您应该使用核心数据以获得更好的性能。 核心数据将是完成这项工作的更好工具:
->缓存索引文件与实际存储的数据不匹配;
->简单的查询;
->漂亮而简单的面向对象代码。
NSUserDefaults
如果你想添加记住我选项你必须使用 NSUserDefaults。它将存储在 plist 文件中。有关更多信息,您应该浏览 this .
钥匙串(keychain)
密码和 key 等敏感数据应存储在钥匙串(keychain)中。 Apple 的 Keychain Services Programming Guide 指出“keychain 是一个加密的容器,它包含多个应用程序和安全服务的密码。Keychain 是安全的存储容器,这意味着当钥匙串(keychain)被锁定时,没有人可以访问其 protected 内容”。此外,在 iOS 中,每个应用程序只能访问自己的钥匙串(keychain)项。 您通过传递要查找或创建的键值对字典与钥匙串(keychain)交互。每个键代表一个搜索选项或钥匙串(keychain)中项目的一个属性。
关于ios - 分解 iOS 应用程序中不同存储方法的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28937126/