IOS 存储方式(PList、NSUserDefaults、归档、CoreData、数据库、文件)

IOS 存储方式(PList、NSUserDefaults、归档、CoreData、数据库、文件),第1张

iOS开发,plist文件读写那些事 - (jianshu.com)

NSUserDefaults存储轻量级 的本地数据 ,比如要保存一个登陆界面的数据,用户名、密码之类的。

支持的数据类型有 NSString、 NSNumber、NSInteger、NSFloat、BOOL、NSArray、NSDictionary、NSDate、 等系统定义的数据类型。

用NSUserDefaults存储的数据下次程序运行的时候依然存在 .它的数据存储在应用程序内置的一个plist文件里, 在/Library/Prefereces沙盒路径下.

NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:

使用NSKeyedArchiver 对数据进行 归档 反归档(将自定义类型转换为NSData类型:)

NSuserDefaults 的坑

iOS 最终,我还是决定放弃使用NSUserDefaults了 - (jianshu.io)

归档: ,就是将数据写到一个文件里面去。一般我们的应用的变量常量之类的数据都是在内存里面的,只要APP关闭,这些数据都会丢失。但是把数据存储到文件里面去,就能将数据保存到本地磁盘里面(目前iOS基本就是在沙盒里面 *** 作了),不管是APP关闭还是重启设备,下次启动APP的时候都能够读出来。

解档: (别人也叫反归档),就是将数据从文件里面读取出来。在程序里面使用。

【iOS】数据持久化:使用NSKeyedArchiver进行数据归档 - (jianshu.com)

iOS 开发Core Data使用方法 – 技术狗 (jishudog.com)

IOS 开发文件 *** 作——NSFileManager - 星语海蓝 - 博客园 (cnblogs.com)

(15条消息) iOS文件 *** 作_你有故事,我囿酒-CSDN博客

参考:

iOS开发 - 关于 NSUserDefaults 的使用 - (jianshu.com)

一般的数据量很小的项目,没必要使用数据库,如果只是保存写用户信息,大可以用其他的方法,用keychain或者nsuserdefault或者其他的都可以。任何一个项目都需要保存一个使用状态,不能每次打开项目的时候都和第一次运行一样,完全新,要给人以使用过的感觉就要存储一些历史数据。如果怕影响用户体验的话,可以多开线程在后台去对数据 *** 作(数据量大的情况下),记得对线程要回收。如果你对保存数据比较迷茫的话,你可以google一下ios的四种数据持久化,对于sqlite和coredata,我个人认为只是两种不同的存储方法,一种是小型轻量级sqlite数据库,所有移动设备经常用到的,还有一种是苹果针对ios *** 作系统开发的coredata数据存储,具体孰胜孰略还有待你自己去了解,一般如果我的数据库要非常多的表格互相关联最后查询一条结果那么我会采用sqlite,如果存储一些有规律的数据那么我会采用coredata,没有哪个更好的说法,只能说这两种都各有千秋,而我听前辈们说,coredata只是苹果对sqlite的又一次封装而已,方便 *** 作但也局限 *** 作

 1. OrmLite

OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。

2. SugarORM

SugarORM 是 Android 平台专用ORM。提供简单易学的APIs。可以很容易的处理1对1和1对多的关系型数据,并通过3个函数save(), delete() 和 find() (或者 findById()) 来简化CRUD基本 *** 作。

要启用SugarORM,需要在你的应用程序 AndroidManifest.xml 配置中添加如下meta-data标签:

<meta-data android:name="DATABASE" android:value="my_database.db" />

<meta-data android:name="VERSION" android:value="1" />

<meta-data android:name="QUERY_LOG" android:value="true" />

<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.my-domain" />

然后就可以从SugarORM扩展需要保存的数据类:

public class User extends SugarRecord<User>{

String username

String password

int age

@Ignore

String bio//this will be ignored by SugarORM

public User() { }

public User(String username, String password,int age){

this.username = username

this.password = password

this.age = age

}

}

要添加一个User,代码如下:

User johndoe = new User(getContext(),"john.doe","secret",19)

johndoe.save()//stores the new user into the database

3. GreenDAO

当性能很重要时(数据访问频繁),GreenDao是一个很快的解决方案,它能够支持数千条记录的CRUD每秒,和OrmLite相比,GreenDAO要快几乎4.5倍。(准确数据请自行benchmark)。

GreenDAO小于100KB,所以对于应用程序APK的大小影响很小。

这里有一个教程,演示如何使用Android Studio,在Android应用程序中使用GreenDAO框架。

4. Active Android

Active Record(活动目录)是Yii、Rails等框架中对ORM实现的典型命名方式。Active Android 帮助你以面向对象的方式来 *** 作SQLite。

5. Realm

Realm 是一个将可以使用的Android ORM,基于C++编写,直接运行在你的设备硬件上(不需要被解释),因此运行很快。它同时是开源跨平台的,iOS的代码可以在GitHub找到,你还可以找到Objective C以及Swift编写的Realm使用实例。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6777406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存