iOS数据本地化

1.NSUserDefaults

2.归档   浅谈iOS本地数据保存 -

使用NSKeyedArichiver /ɑːkaɪv/进行归档、NSKeyedUnarchiver进行接档,这种方式会在写入、读出数据之前对数据进行序列化、反序列化操作。

//归档:对象->NSData的过程

//解归档:NSData->对象的过程;

//对数据的操作效率不高,不建议存储大量的数据

//任何对象实现归档需要遵循NSCoding 协议,NSArray NSString NSDictionary 已经遵守了协议 直接归档即可;

BOOL isSuccessed= [NSKeyedArchiver archiveRootObject:array toFile: @""];

NSArray *tmp=(NSArray *) [NSKeyedUnarchiver unarchiveObjectWithFile:@""];

//任意对象的归档  需要遵守归档协议 NSCoping,并实现归档和解归档的方法(encodeWithCoder和initWithCoder)再分别对类中的变量进行归档和解归档;

3.文件保存

4.数据库sqlite3:

    fmdb

CoreData

CoreData提供了一种“对象-关系映射”的功能,能将OC对象转化成数据,保存Sqlite中。CoreData的好处就是能够合理管理内存,避免sql语句的麻烦(不用写sql语句)。

5.NSUrlCache

6.KeyChain(钥匙串)等多种方式 (与沙盒无关)


iOS数据本地化_第1张图片
沙盒目录

fmdb

FMDB - 潜意识 - 博客园

它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以是线程安全的。


FMDB框架中重要的框架类

FMDatabase

FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句

FMResultSet使用FMDatabase执行查询后的结果集

FMDatabaseQueue用于在多线程中执行多个查询或更新,它是线程安全的

2.keychain

SFHFKeychainUtils

相比于NSUserDefaults来说,KeyChain保存更为安全,而且KeyChain里面保存的数据不会因为app删除而丢失。

KeyChain还有一个用途,就是替代UDID。UDID已经被废除了,所以只能用UUID代替,所以我们可以把UUID用KeyChain保存。

来源:iOS Keychain(钥匙串) 原理和APP之间共享信息(例如:账号密码) - freestyle个人页面 - 开源中国

##关于共享 Keychain的数据可以透过Group Access的方式,让资料可以在App间共享,Google系列的App (Gmail、Google+、日历…)就是通过这样的方式来记录使用者登入信息,只要使用者在其中一个App中完成登入了,其他的App也可以读取到同相的登入咨询进行登录。 ###进入Capabilities,将Keychain打开 

iOS数据本地化_第2张图片

开启Keychain后,会自动新增一个Keychain Group,使用的是Bundle Identifier。 同时也会自动新增一个entitlements文件,里面也会有一个Access Group,名为 $(AppIdentifierPrefix)+你的bundleID 

iOS数据本地化_第3张图片

(AppIdentifierPrefix)可以是开发者的代号需要登录才会有,也就是开发者证书后小括号的内的英文数字组合。使用$(AppIdentifierPrefix)只能被同一个开发者账号的app来存取,以防被有心人盜取。 

你可能感兴趣的:(iOS数据本地化)