数据存储实现的大部分只是SQLite包装器.最常见的iOS实现是SQLite、ORM、CoreData、Realm和Keychain.
实现的另一部分只是一个简单的文本.例如,UserDefaults只是一个XML文件,您可以使用简单的iOS API对其进行编辑.但是,由于性能原因,当您使用几十个以上的元素时,SQLite包装器更有用.
那么,SQLite包装器怎么样呢?
- 您可以使用Keychain,但它有几个缺点:这不是线程安全的,您只能在应用程序允许的时刻获取数据,有时它会为现有元素返回错误的结果.这对密码很有用,仅此而已.
- CoreData有原生API,但它有内存泄漏的缺点,复杂的API,这不是一个线程安全的数据库,性能不好.
- SQLite美元.首先,您可以使用具有11KB依赖关系的原生C库.缺点:老式C API,原始SQL查询.
- SQLite Swift wrapper美元.在这种情况下,您必须使用第三方库.但是表现得很好.
- SQLite ORM美元.这种方式允许在不知道谁实际映射到SQLite表的情况下使用您的对象.使用方便,性能不佳,依赖于第三方.
- Realm美元.这真的很好用,而且很容易使用.但是它在线程安全方面有一个缺点.ORM和领域之间的不同之处在于,领域中的对象不会存储为明显的表,它有自己的魔术,即如何将数据转换为表表示形式.
- Firebase database美元.我在制作中没有使用这个图书馆.它已将在线实施作为主要功能.我不确定使用主要内部数据库是否正确.
总结怎么样?
我们测试中的SQLite(包装器,纯C)和领域具有几乎相同的性能.CoreData还不够好.
SQLite包装器和领域有足够好的API.
唯一的SQLite包装器是真正的线程安全的.