iOS 数据持久化方法

    整理ios开发中一些数据持久化的方法,有一些没有使用过,也是通过浏览其他文章学习,有问题可以留言或者查看原文。

用户设置 settings bundle      属性列表与归档解档

文章整理5种持久化的方法,记录一些重要的点,具体使用请查看原文

a:settings bundle -> 存储用户设置相关信息,在系统设置中可查看和设置 

b:属性列表

c:对象的归档、解档

d:数据库 SQLite3 的运用

e:Core Data 的运用

1:首先使用settings bundle ,像其他应用一样在系统设置里面设置应用配置

a:创建一个应用,运行到真机上 这个时候在系统设置里面找不到应用设置信息

b:创建settings bundle,在新建文件中找到Resource -> 找到settings bundle->创建

c:这个时候运行到真机上,在系统设置中就可以看到应用配置选项了。



d:查看新建的属性列表,主要看Root.plist文件



如果你的编辑窗口与图看起来不一样,右键空白处,在弹出的菜单中选择:"Show Raw Keys/Values"。点击每一项可以查看其基本配置信息。

查看plist中各项组织结构。属性列表本质上就是字典。在存储的各个条目的类型与值,都要通过特定的键key来检索他们,这种使用方法与NSDictionaryBoolean、Data、Date、Number、String可以保存数据;另外,除了Dictionary也可以做为保存字典的节点外,还有Array节点,也是可以储存含有其他节点的有序列表。其中,其中Dictionary和Array是唯一能够包含其他节点的属性列表节点类型。

(注:虽然平时用的NSDictionary可以使用大多数对象做为键,但属性列表中的Dictionary节点中键必须为字符串类型的,但是可以选择任意节点类型做为该键的值。) 

e:查看具体使用请查看原文,现在从app获取配置文件的数据(获取数据)。

访问用户的设置需要调用NSUserDefaults类,NSUserDefaults为单例类,需要调用类方法standardUserDefaults来获取指向标准用户默认设置的指针:

NSUserDefaults *defaults =  [NSUserDefaults standardUserDefaults];

defaults可以像NSDictionary类一样进方法的调用,例如“objectForKey:”,会返回一个Object-C对象,如NSString、NSDate、NSNumber。若需要获取整型、浮点型等方式,可以用“intForKey:”、“floatForKey”、“boolForKey”等其他方法。

f:自动创建的配置文件包含一个name输入框,一个enabled设置,一个slider;我们可以在配置文件中查看其Identifier,通过NSUserDefaults获取其具体值.

  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *name = [defaults valueForKey:@"name_preference"];

g:通过app设置配置,现在无论在系统还是app修改配置,都可以同步内容,其他需要注意的地方请查看原文(获取数据)

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setFloat:self.WarpSlider.value forKey:SliderValue];

[defaults synchronize];

2:属性列表 这里是原文

a:获取属性列表的路径

//获取属性列表路径中数据文件的完整路径 dataFilepath//需要加载和保存数据的代码都可以调用该方法.                                                                                                                                        

-(NSString *)dataFilepath{

NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *pathDirectory = [paths objectAtIndex:0];

return [pathDirectory stringByAppendingPathComponent:@"data.txt"];

}

b:写入列表

NSString *pathFile = [self dataFilepath];

NSArray *array = [self.lineFields valueForKey:@"text"];

//把字符串数组写入文件。

[array writeToFile:pathFile atomically:YES];

c:获取列表内容

NSString *filePath = [self dataFilepath];

//判断是否存在属性列表文件

if([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {

//获取数据

NSArray *ar= [[NSArray alloc]initWithContentsOfFile:filePath];

}

3:对模型对象进行归档、解档   这里是原文

就像我们前面属性列表的介绍,归档(archiving)也是指另一种形式的序列化。但强大的一点是,它是任何对象都可以实现的更常规的储存数据类型;在进行归档、解档的开发中,我们需要一起实现的,还有NSCoding和NSCopying协议,需要说明的是,标量(如int或float)以及大多数Foundation和Cocoa Touch类都遵循NSCoding协议(有例外,如UIImage不遵循),因此大多数类,还是比较容易实现归档操作的;

你可能感兴趣的:(iOS 数据持久化方法)