1.属性列表
2.对象归档
3.数据库存储(SQLite3)(用c写的,后来有了FMDB,FMDB是用oc写的,轻量级且用着方便)
4.苹果公司提供的持久性工具Core Data。
用法解析:
1,存储键值对小数据是最合适,因为速率很高,plist,NSUserDefaults
属性列表存储机制,这个机制支持NSArray,NSDictionary,NSData,NSString,NSNumber,NSDate 等等
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *docPath = [paths objectAtIndex:0];
- NSString *myFile = [docPath stringByAppendingPathComponent:@"my.list"];
- //读取文件
- NSArray *array = [[NSArray alloc] initWithContentsOfFile:myFile];
- //操作完若修改了数据则,写入文件
- [array writeToFile:myFile atomically:YES];
1).分开存取
// 存
[[NSUserDefaults standardUserDefaults] setInteger:userID forKey:@”userID”];
[[NSUserDefaults standardUserDefaults] setObject:name forKey:@”name”];
// 取
NSInteger uId = [[[NSUserDefaults standardUserDefaults] integerValueForKey:@”userID”];
NSString* name = [[NSUserDefaults standardUserDefaults] stringForKey:@”name”];
2).按对象存取
// 存
[[NSUserDefaults standardUserDefaults] setObject:self forKey:@”user”];
// 取
User* u = [[NSUserDefaults standardUserDefaults] objectForKey”@”user”];
要使用对象归档,对象必须实现NSCoding协议.大部分Object C对象都符合NSCoding协议,也可以在自定义对象中实现NSCoding协议,要实现NSCoding协议,实现两个方法:
- (void) encodeWithCoder:(NSCoder *)encoder 与 -(void)initWithCoder:(NSCoder *)encoder
同时,建议对象也同时实现NSCopying协议,该协议允许复制对象,要实现NSCopying协议须实现 -(id)copyWithZone:(NSZone *)zone 方法 。
- - (void)encodeWithCoder:(NSCoder *)aCoder
- { //encoder
- [aCoder encodeObject:stringAforKey:@"1"];
- [aCoder encodeObject:stringBforKey:@"2"];
- }
- - (id)initWithCoder:(NSCoder *)aDecoder
- {
- //decoder
- if (self = [superinit]) {
- stringA = [[aDecoder decodeObjectForKey:@"1"] retain];
- stringB = [[aDecoder decodeObjectForKey:@"2"] retain];
- }
- returnself;
- }
FMDB:https://github.com/ccgus/fmdb.git
对SQLite都做了不错的封装。
4.Core Data数据持久化是对SQLite的一个升级,它是ios集成的