iOS学习笔记OSiOS--开发技巧iOS

iOS 数据存储的常用方式

2015-11-12  本文已影响7656人  iOS_成才录

一、iOS应用数据存储的常用方式

二、数据存储

1、 pist文件读与写

   NSString *docPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)[0];
    // 拼接要保存的地方的路径
    NSString *filePath = [docPathstringByAppendingPathComponent:@"str.plist"];
    // 1、写入数据
    [array writeToFile:filePath atomically:YES];
    // 2、 读取数据
    NSArray *array = [NSArray arrayWithContentsOfFile:filePath];

**​2、偏好设置: **

    NSUserDefaults *UserDefaults = [NSUserDefaultsstandardUserDefaults];
    // 1、写入
    [UserDefaults setBool:NO forKey:@"isLogined"];
    // 强制写入
    [defaults synchornize];  
 
    // 2、读取
    BOOL isVisble = [UserDefaults boolForKey:@"isLogined"];

3、获取临时文件夹路径

//    3.1 获取临时文件夹路径
    NSString *tmp = NSTemporaryDirectory();
//    3.2 定义宏,快速访问临时文件夹中文件
#define FilePath [NSTemporaryDirectory() stringByAppendingPathComponent:@"person.data"]

4、归档 NSKeyedArchiver

应该在encodeWithCoder:方法中加上一句

[super encodeWithCode:encode]; // 确保继承的实例变量也能被编码,即也能被归档

应该在initWithCoder:方法中加上一句

self = [super initWithCoder:decoder]; // 确保继承的实例变量也能被解码,即也能被恢复

+ 基本使用

```objc
// 1. 自定义模型类Person

// 1.1 Person.h文件
#import <Foundation/Foundation.h>

// 只要一个自定义对象想要归档,必须要遵守NSCoding协议,并且要实现协议的方法
@interface Person : NSObject<NSCoding>

@property (nonatomic, assign) int age;

@property (nonatomic, strong) NSString *name;

@end

// 1.2 .m实现文件
#import "Person.h"

#define KName @"name"
#define KAge @"age"

@implementation Person

// 什么时候调用:当一个对象要归档的时候就会调用这个方法归档
// 作用:告诉苹果当前对象中哪些属性需要归档
- (void)encodeWithCoder:(NSCoder *)aCoder
{
 [aCoder encodeObject:_name forKey:KName];
 [aCoder encodeInt:_age forKey:KAge];
}

// 什么时候调用:当一个对象要解档的时候就会调用这个方法解档
// 作用:告诉苹果当前对象中哪些属性需要解档
// initWithCoder什么时候调用:只要解析一个文件的时候就会调用
- (id)initWithCoder:(NSCoder *)aDecoder
{
 #warning  [super initWithCoder]
 if (self = [super init]) {
     // 解档
     // 注意一定要记得给成员属性赋值
   _name = [aDecoder decodeObjectForKey:KName];
   _age = [aDecoder decodeIntForKey:KAge];
 }
 return self;
}

@end

// 2. 实例 -》基本使用:取 / 存 数据 
// 归档
[NSKeyedArchiver archiveRootObject: self.persons toFile:KFilePath];// 将self.persons模型对象数组 
 
// 解档       
_persons = [NSKeyedUnarchiver unarchiveObjectWithFile:KFilePath];

5、SQLite3

6、Core Data

上一篇下一篇

猜你喜欢

热点阅读