iOS数据存储方法总结

数据本地化的几种方式:

    1.plist
    2.偏好设置
    3.归档
    4.sqlite
    5.CoreData
    6.Keychain
  • XML属性列表(plist)

    plist全名是:Property List,属性列表文件,通常被称为plist文件。文件是xml格式的。它是以key-value的形式来存储数据。
    作用:可以用来存储用户设置。
    缺点:plist只能存储系统自带的一些常规的类, 也就是有writeToFile方法的对象才可以使用plist保存数据。例如:NSString、NSDictionary、NSArray、NSData、 NSNumber等类型

  • Preference(偏好设置)

    偏好设置本质也是 plist。
    作用:偏好设置是专门用来保存应用程序的配置信息,比如保存用户名、密码、字体大小、是否自动登录等小数据量信息。
    缺点:不能存储大数据。

  • NSKeyedArchiver归档(NSCoding)

      可以保存对象到文件中,并能从文件中读取对象。
    
  • SQLite3 数据库

     优点:里面封装了各种查询,插入,删除,更新数据等算法,速度非常快。
     缺点:使用相对较难,需要记住sql语句。 
    
  • Core Data

    苹果提供的数据持久化的框架,是对SQLite3的封装。
    能够将OC对象转化成数据,也能够将保存在数据库中的数据还原成OC对象。

  • Keychain

    Keychain是苹果提供的带有可逆加密的存储机制,普遍用在各种存密码的需求上。另外,由于App卸载只要系统不重装,Keychain中的数据依旧能够得到保留,以及可被iCloud同步的特性,大家都会在这里存储用户唯一标识串。所以有需要加密、需要存iCloud的敏感小数据,一般都会放在Keychain

数据存储的位置

Documents :保存应用运行时生成的需要持久化的数据
Library/Caches : 保存应用运行时生成的需要持久化的数据,一般存储体积大、不需要备份的非重要数据
Library/Preference : 保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。
tmp : 保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。

  • 沙盒根目录的获取方式:
    NSString *home = NSHomeDirectory();
  • Documents文件夹:
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSString *filePath = [path stringByAppendingPathComponent:@"xxx.plist"];
  • Library/Caches文件夹:
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
    NSString *filePath = [path stringByAppendingPathComponent:@"xxx.plist"];
    用法:
    //存
    NSArray *arr = [[NSArray alloc] initWithObjects:@"1", @"2", nil];
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
    NSString *filePath = [path stringByAppendingPathComponent:@"xxx.plist"];
    [arr writeToFile:filePath atomically:YES];
    //取
    NSString *filePath = [path stringByAppendingPathComponent:@"xxx.plist"];
    NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];
  • Library/Preference文件夹:
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setBool:self.close forKey:@"close"];
  • tmp文件夹:
    NSString *tmp= NSTemporaryDirectory();
  • sqlite

    使用FMDB框架:https://github.com/ccgus/fmdb
    FMDB有三个主要的类:

    FMDatabase,一个FMDatabase对象就代表一个单独的SQLite数据库用来执行SQL语句。
    FMResultSet,使用FMDatabase执行查询后的结果集。
    FMDatabaseQueue,用于在多线程中执行多个查询或更新,它是线程安全的
    
  • CoreData
    详情: http://blog.csdn.net/jacob_ios/article/details/51549408

  • Keychain

    Keychain是苹果提供的带有可逆加密的存储机制,普遍用在各种存密码的需求上。另外,由于App卸载只要系统不重装,Keychain中的数据依旧能够得到保留,以及可被iCloud同步的特性,大家都会在这里存储用户唯一标识串。所以有需要加密、需要存iCloud的敏感小数据,一般都会放在Keychain。
    1.存储的信息相对NSUserDefault 或者其它一些存储在 App 沙盒中的信息安全很多。
    2.关键信息经过加密处理。
    网上有很多关于 KeyChain 的访问组件,Apple 也提供了相应的 Demo。但是,感觉不怎么实用,操作起来相对麻烦。
    所以推荐 KIKeyChain 这个组件。https://github.com/smartwalle/KIKeyChain

写入数据:

KIKeyChain *key = [KIKeyChain keyChainWithIdentifier:@"default_user"];
[key setValue:@"user1" forKey:@"username"];
[key setValue:@"password1" forKey:@"password"];
[key write];

读取数据:

KIKeyChain *key = [KIKeyChain keyChainWithIdentifier:@"default_user"];
NSLog(@"%@==%@", [key valueForKey:@"username"], [key valueForKey:@"password"]);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS记账App开发可以采用小歆记账AUI项目作为参考。小歆记账AUI是一个基于APICloud AUI的记账应用,适用于iOS平台。该应用可以通过APICloud提供的前端框架AUI进行开发,并利用APICloud的逻辑处理和云编译功能。 在小歆记账AUI项目中,数据存储部分是在服务端,与小歆记账WebApp项目共用数据库。通过Ajax与小歆记账WebApp后台进行通信,实现数据的同步和更新。 在具体的iOS记账App开发中,可以参考小歆记账AUI项目的功能和界面设计,根据需求进行定制化开发。可以使用iOS开发技术,如Objective-C或Swift,来实现记账功能、账本管理以及数据存储等功能。可以使用iOS提供的界面组件和API来构建用户界面,并与后端进行数据交互。 在数据存储方面,可以设计账本表(Book)来管理账本信息,其中包括账本ID(bookID)和账本名(name)等字段。通过对账本表的操作,实现账本的增删改查等功能。可以使用Core Data或其他数据库技术来进行数据存储和管理。 总结来说,iOS记账App开发可以参考小歆记账AUI项目,利用APICloud提供的前端框架AUI和后端通信功能,通过iOS开发技术实现记账功能和数据存储。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [小歆记账AUI项目(APICloud客户端)](https://blog.csdn.net/zhangzejin3883/article/details/108904157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【iOS】基于Realm数据库的记账软件--Realm数据库(一)](https://blog.csdn.net/Bloody_Leaves/article/details/74937708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值