您的位置:首页 > 移动开发 > IOS开发

iOS中数据存储的几种代码实现

2016-03-18 11:54 477 查看
首先,可以通过获取应用沙盒的全路径然后直接使用write to file 直接写入沙盒:

//写入方法
-(void)test {
    // 应用沙盒根目录
    NSString *home = 
NSHomeDirectory();
     NSLog(@"home");
    // 获得documents文件夹目录
    NSString *doc = [home
stringByAppendingPathComponent:@"documents"];
    // 获得文件全路径
    NSString *filePath = [doc
stringByAppendingPathComponent:@"abc.plist"];
    // 将数据保存到plist文件中
    //    [@"rose" writeToFile:filePath atomically:YES];
    NSArray *array = 
@[@"rose",@"jack"];
        [array writeToFile:filePath
atomically:YES];
    // 凡是能够调用writeToFile:方法的对象都可以直接将数据保存到plist.比如NSString,NSArray,NSDictionary,NSData,NSNumber....
}

//取出方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent
*)event {
    // 应用沙盒根目录
    NSString *home = 
NSHomeDirectory();
    // 获得documents文件夹目录
    NSString *doc = [home
stringByAppendingPathComponent:@"documents"];
    // 获得文件全路径
    NSString *filePath = [doc
stringByAppendingPathComponent:@"abc.plist"];
    // 从沙盒中获得数据
    NSArray *array =  [NSArray
arrayWithContentsOfFile:filePath];
    NSLog(@"%@", array);
}

2.使用

NSUserDefaults  存储,默认存入偏好设置

 // 偏好设置对象
    NSUserDefaults *defaults = [NSUserDefaults
standardUserDefaults];
    [defaults setObject:@"jack"
forKey:@"name"];
    [defaults setObject:@"rose"
forKey:@"password"];
    [defaults setInteger:100
forKey:@"age"];
    [defaults setDouble:1.9
forKey:@"height"];
    [defaults setBool:YES
forKey:@"sex"];
    [defaults setFloat:189.9
forKey:@"weight"];
    
    // 在ios8之前还有加入下面代码
    // 立即同步,立即保存数据
    [defaults synchronize];
///////取出数据

 NSUserDefaults *defaults = [[NSUserDefaults
alloc] init];
    NSString *name = [defaults
objectForKey:@"name"];
    BOOL sex = [defaults
boolForKey:
4000
@"sex"];
    NSInteger age =  [defaults
integerForKey:@"age"];
3.使用
NSKeyedArchiver  保存数据

 NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject];
    NSString *filePath =  [docDir
stringByAppendingPathComponent:@"stu.data"];
    // 保存自定对象
    // NSKeyedArchiver:归档:就数据保存到文件的过程
    [NSKeyedArchiver
archiveRootObject:student
toFile:filePath];
解档

    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject];
    NSString *filePath =  [docDir
stringByAppendingPathComponent:@"stu.data"];
    
//    NSKeyedUnarchiver:解档:将文件中的数据对入内存中
   HMStudent *stu = [NSKeyedUnarchiver
unarchiveObjectWithFile:filePath];
     
     //对象需要遵守NSCoding协议并且重写- (void)encodeWithCoder:(NSCoder *)encoder {
//     [encoder encodeObject:self.title forKey:@"title"];}
//     和
//     - (nullable instancetype)initWithCoder:(NSCoder *)decoder {
//          if (self = [super init]) {
//               self.title =  [decoder decodeObjectForKey:@"title"];
//          }
//          return self;
//     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 数据存储