IOS线程数据篇6之数据持久化plist、preference、NSKeyedArchiver(NSCoding)、Core Data、SQLite3

本文介绍了iOS中五种常见的数据持久化技术:plist、preference、NSKeyedArchiver、CoreData及SQLite3,并提供了具体的代码示例。

在IOS中数据持久化通常有5种方法,包括plist、preference、NSKeyedArchiver(NSCoding)、Core Data、SQLite3.

其中Core Data 、SQLite 3 都是对数据库的操作,这里暂且将二者归为一类。尤其是Core Data,用户不需要掌握SQL语言就可以对数据库进行操作,实现基本的增删改查。

Plist存储  这个需要知道文件的名称。当然也可以直接写入图片。

图片png或者jpeg解码成nsdata,然后存储。

- (void)saveArray

{

    // 1.获得沙盒根路径

    NSString *home =NSHomeDirectory();

    // 2.document路径

    NSString *docPath = [homestringByAppendingPathComponent:@"Documents"];

    // 3.新建数据

    NSArray *data =@[@"yyy",  @"xxx"];

    NSString *filepath = [docPathstringByAppendingPathComponent:@"data.plist"];

    [data writeToFile:filepathatomically:YES];

}

 

- (IBAction)read {

    // 1.获得沙盒根路径

    NSString *home =NSHomeDirectory();

    // 2.document路径

    NSString *docPath = [homestringByAppendingPathComponent:@"Documents"];

    // 3.文件路径

    NSString *filepath = [docPathstringByAppendingPathComponent:@"data.plist"];

    // 4.读取数据

    NSArray *data = [NSArrayarrayWithContentsOfFile:filepath];

    NSLog(@"%@", data);

}

IOS设备下主要有以下几个目录:

Documents:存放一些持久化的数据,ITunes会备份。

Tmp:临时存储目录,应用停止的时候有时候里面的内容会被清空。ITunes不备份。

Library/Preference:偏好设置,ITunes备份,如IOS种的Setting。

Library/Caches:临时大文件。ITunes不备份。

Plist本质上还是一种xml。只能从存储数组 字典 nsnumber等oc的基本对象 (NSdata)。

preference(不需要知道文件的名称)

操作起来最简单

- (IBAction)save {

    // 1.利用NSUserDefaults,就能直接访问软件的偏好设置(Library/Preferences)

    NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults];

   

    // 2.存储数据

    [defaults setObject:@"xx"forKey:@"yy"];

    // 3.立刻同步

    [defaults synchronize];

- (IBAction)read {

    NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults];

    NSString *account = [defaultsobjectForKey:@"yy"];

    NSLog(@"%@ -- %d", account, autoLogin);

}

NSCoding (主要存储一些对象)使用时候有两个方法要注意:

- (void)encodeWithCoder:(NSCoder *)encoder 文件存储时候需要调用,指明哪些属性需要存储。

- (id)initWithCoder:(NSCoder *)decoder 文件解析的时候调用。这两个方法一定要复写。

- (IBAction)save {

    // 1.新的模型对象

    Person *one1 = [[Personalloc]init];

    one1.xx =@"123";

   

    // 2.归档模型对象

    // 2.1.获得Documents的全路径

    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];

    // 2.2.获得文件的全路径

    NSString *path = [docstringByAppendingPathComponent:@"one1.data"];

    // 2.3.将对象归档

    [NSKeyedArchiverarchiveRootObject:stutoFile:path];

}

 

- (IBAction)read {

    // 1.获得Documents的全路径

    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];

    // 2.获得文件的全路径

    NSString *path = [docstringByAppendingPathComponent:@"one1.data"];

   

    // 3.从文件中读取MJStudent对象

    Person *p1 = [NSKeyedUnarchiverunarchiveObjectWithFile:path];

   

    NSLog(@"%@", P1.xx);

}

NSCoding 用于类之间的继承关系

子类继承父类的时候,子类可以使用父类中所有的成员变量来存储。





下载代码方式:https://pan.quark.cn/s/e2157c05e625 在信息技术领域中,数学问题的复杂求解在很大程度上依赖于数值计算,这在科学计算、工程分析以及数据分析等多个方面尤为重要。线性方程组的求解是数值计算中的一个核心且关键的问题,而雅克比迭代法作为一种有效策略,专门用于处理大规模稀疏线性方程组。这个资源提供了一段采用C++语言编写的雅克比迭代法源代码,配合附带的博客文章,能够帮助使用者深入掌握此方法的基本原理和实际应用。 雅克比迭代法,有时也被称作局部迭代方法,主要用于求解形式为 Ax = b 的线性方程组,其中矩阵A需满足对角占优的条件。对角占优的特性是指矩阵中每个对角线元素的绝对值要大于该行其他元素绝对值之和,这一性质确保了算法的收敛性能。该方法的实施基于矩阵A的雅克比矩阵J,其构成方式为 J = D - L - U,其中D、L和U分别代表矩阵A的对角线部分、下三角部分以及上三角部分。 迭代过程的数学表达式为:x(k+1) = J^-1 * b + (I - J^-1*A) * x(k),在此表达式中,x(k)表示第k次迭代的解向量,x(k+1)则是第k+1次迭代的解向量,I是单位矩阵。每次迭代都利用前一次得到的解来计算下一次的解,迭代会持续进行,直到解的精度达到预设标准或迭代次数达到最大限制。 在使用C++进行编程实现时,主要步骤包括: 1. 初始化阶段:设定初始解向量x(0),并明确迭代过程中的参数,例如最大迭代次数和容许的误差界限。 2. 构建雅克比矩阵:依据矩阵A的非对角元素来形成J矩阵。 3. 迭代计算:依照上述迭代公式计算新的解向量,并验证是否满足终止条件(即当前解与前一次解的差值小于设定的误差界限)。 4. 结果输出...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值