当我们使用CoreData,UserDefaults,钥匙串

时间:2019-01-25 22:30:44

标签: ios cocoa-touch core-data

iOS具有多个本地数据库,例如CoreData,Keychain,UserDefault。这3个数据库都执行相同的操作,即保存,更新,选择等。它们之间是否有不同之处,例如安全性,内存或速度?当使用(CoreData,UserDefaults,Keychain)比其他功能更强大时?

2 个答案:

答案 0 :(得分:3)

不是全部,但总之

  • Userdefaults:用于保存设置数据。它不能用于跨viewController的临时数据。当涉及到应用程序的运行状态时,它是最快的plist文件或字典

  • CoreData:是用于大型数据存储的关系数据库,可以通过简单的UI自动创建模型,并且是基于sqlite的

  • 钥匙串:是最安全的,并且始终用于敏感数据,例如令牌,密码等。但是它也是最慢的,因为它是c包装器。

答案 1 :(得分:1)

NSCoding/NSKeyed​Archiver vs. Core Data不能直接回答您的问题。但这很有帮助。长话短说:核心数据令人头疼,但是在建模,查询,遍历和持久化复杂对象图时,没有任何替代核心数据。核心数据是一个很大的锤子,但并非每个问题都是一个钉子,更不用说足够大的钉子了。

KeyChain更像是一个保险库。您在其中存储少量有限的信息,例如密码。您不会在其中存储整个数据库。就像看门人一样:“此用户可以打开应用程序吗?是?好吧,我们打开数据库并显示核心数据条目...”

UserDefaults就像用户访问的最后一页。您可以存储单个自定义对象,但不要存储大量自定义对象。