重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、偏好设置(NSUserDefaults)
创新互联公司是一家专注于成都网站设计、网站建设与策划设计,隰县网站建设哪家好?创新互联公司做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:隰县等地区。隰县做网站价格咨询:18980820575
2、plist文件存储
3、归档
4、SQLite
5、Core Data
我们首先需要了解下沙盒(Sandbox)
Application :存放程序源文件,上架前经过数字签名,上架后不可修改
Documents : 保存应⽤运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录
tmp : 保存应⽤运行时所需的临时数据,使⽤完毕后再将相应的文件从该目录删除。应用 没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录。
Library/Caches : 保存应用运行时⽣成的需要持久化的数据,iTunes同步设备时不会备份 该目录。⼀一般存储体积大、不需要备份的非重要数据,比如网络数据缓存存储到Caches下
Library/Preference : 保存应用的所有偏好设置,如iOS的Settings(设置) 应⽤会在该目录中查找应⽤的设置信息。iTunes同步设备时会备份该目录
NSUserDefaults是个单例类,用于存储少量数据。NSUserDefaults实际上对plist文件操作的封装,更方便我们直接操作,一般用于存储系统级别的偏好设置。比如我们经常将登录后的用户的一些设置通过NSUserDefaults存储到plist文件中。
NSUserDefaults使用起来非常简单,例如将用户的账号和密码存储起来:
1、plist文件(属性列表),通常用于储存用户设置,也可以用于存储捆绑的信息;
2、preference(偏好设置),常用于保存少量数据;
3、NSKeyedArchiver(归档),将内存中的对象实例保存成binary到磁盘并且可以逆向这个过程用来保存用户操作状态等;
4、SQLite 3,使用数据库进行存储;
5、CoreData,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。
对于数据的持久化存储,ios中一般提供了4种不同的机制。
1.属性列表
2.对象归档
3.数据库存储(SQLite3)
4.苹果公司提供的持久性工具Core
Data。
其实储存的形式无非就这么几种,而我们还必须要关心的是,这些文件会被放置在那个文件下,然后如何读取。
也就是说:IOS上数据存储,我们要了解的两点,数据存储格式(也就是存储机制),数据存储位置。
1》文件如何存储(如上面4点)
2》文件存储在哪里。
对于数据的操作,其实我们关心的是操作的速率。
就好比在Adnroid中偏好存储,数据库存储,io存储一样。
1.plist文件(属性列表)
2.preference(偏好设置)
3.NSKeyedArchiver(归档)
4.SQLite 3
5.CoreData
偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。
如果没有调用synchronize方法,系统会根据I/O情况不定时刻地保存到文件中。所以如果需要立即写入文件的就必须调用synchronize方法。
偏好设置会将所有数据保存到同一个文件中。即preference目录下的一个以此应用包名来命名的plist文件。
NSUserDefaults适合存储轻量级的本地数据,如登陆界面的数据,用户名、密码等用户偏好设置类的数据。下次启动应用的时候就可以直接从NSUserDefaults里面读取上次运行的数据。
如果使用自己建立的plist文件什么的,需要自己显式创建文件,读取文件,很麻烦,而如果用NSUserDefaults则不用管这些,就像读字典一样,直接读取数据就可以了,同时NSUserDefaults有缓存机制,可以避免频繁读写文件。
NSUserDefaults支持的数据格式有:NSNumber(BOOL、Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,NSData类型。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//添加preference
[defaults setObject:@"value1" forKey:@"key1"];
[defaults setObject:@1111 forKey:@"key2"];
[defaults synchronize];
//删除preference
[defaults removeObjectForKey:@"key1"];
[defaults synchronize];
//修改preference
[defaults setObject:@"value2" forKey:@"key1"];
[defaults synchronize];
//删除所有preference
NSString *appDomainStr = [[NSBundle mainBundle] bundleIdentifier];
[defaults removePersistentDomainForName:appDomainStr];
NSString *key1Value = [defaults objectForKey:@"key1"];
NSNumber *key2Value = [defaults objectForKey:@"key2"];
NSLog(@"偏好设置=%@=%@",key1Value,key2Value);
iOS数据持久化一般采用下面方式
1、NSUserDefaults
2、数据归档。
3、SQLite3
4、Core Data
5、文件
如果你的json数据量不大的话可以使用NSUserDefaults、文件存储。数据量大就需要使用数据库存储。