分解 iOS 个应用中不同存储方法的用例
breaking down use cases of different storage methods in iOS apps
我正在学习构建 iOS swift 应用程序,如果您能指导我的应用程序的不同部分使用哪些存储选项,我将不胜感激。也许其他专业应用程序如何构建其存储的示例也会有所帮助。
具体来说,我认为我的选择是
- 一个独立的MySQL数据库
- 亚马逊 s3
- 核心数据
- nsuserdefaults
- 钥匙串
该应用程序允许用户将 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 中,每个应用程序只能访问自己的钥匙串项。
您通过传递要查找或创建的键值对字典与钥匙串交互。每个键代表一个搜索选项或钥匙串中项目的一个属性。
我正在学习构建 iOS swift 应用程序,如果您能指导我的应用程序的不同部分使用哪些存储选项,我将不胜感激。也许其他专业应用程序如何构建其存储的示例也会有所帮助。
具体来说,我认为我的选择是
- 一个独立的MySQL数据库
- 亚马逊 s3
- 核心数据
- nsuserdefaults
- 钥匙串
该应用程序允许用户将 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 中,每个应用程序只能访问自己的钥匙串项。 您通过传递要查找或创建的键值对字典与钥匙串交互。每个键代表一个搜索选项或钥匙串中项目的一个属性。