存取数据文件(一)

demo
存储文件到沙盒:
1.获取沙盒路径:

-(NSString*)documentPath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory=[paths objectAtIndex:0];
    return documentsDirectory;
}

2.创建文件名,得到文件路径

-(NSString*)getConfigFileName
{
    NSString *docpath = [self documentPath];
    docpath  = [docpath stringByAppendingPathComponent:@"dev00001"];
    
    return  docpath;
}

3.把要存到document里的所有数据类型先转换为字符串

-(NSString*)NSObjectToJsonString:(id)obj
{
    NSString *jsonString = nil;
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:obj
                                                       options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                         error:&error];
    if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
    return jsonString;
}

4.把得到的字符串存到刚才指定的路径中
下面例子是把数组存到沙盒路径中

-(void)save:(NSMutableArray*)ary
{
    NSString *str = [self NSObjectToJsonString:ary];
    
    NSString *fname = [self getConfigFileName];
    
   BOOL res =  [str writeToFile:fname atomically:YES encoding:NSUTF8StringEncoding error:nil];
    if(res){
        NSLog(@"存储成功");
    }
}

5.根据路径取出存入的数据类型
(先从路径中把字符串取出来,然后把字符串转成data,最后把data解析成你刚才存入的数据类型,最后,你可以把想要得到的数据类型自由转换)
下面例子是取出的数组类型数据

-(NSMutableArray*)getRootListButtons
{
    NSString *fname = [self getConfigFileName];
    NSString *str = [NSString stringWithContentsOfFile:fname encoding:NSUTF8StringEncoding error:nil];
    if(str.length!=0){
    NSData * data;//=  read from fname data to data;
    data = [str dataUsingEncoding: NSASCIIStringEncoding];
    NSError *error;
    NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:0];
    array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
    if (array == nil)
    {
        NSLog(@"json parse failed. error = %@",error);
    }
    else
    {
        return array;
    }
    } else{
    return nil;
    }
    return nil;
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,419评论 0 6
  • 1.不可变数组转变为可变数组声明实例变量的数组 必须记得实现 对于遍历数组找到对象后 如果还需要查找 记得先结束 ...
    小新xin阅读 740评论 0 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,203评论 30 471
  • 三月桃花始芳菲 春风犹怜红妆美 无谓花期傲寒立 半缘修道候君来
    瑕疵兽阅读 273评论 0 0
  • GG趁着年假来看我,嗯,就是那个你一直叫不对名儿的,我的朋友。 车子晚点了,九点才接到她,吃得也不知道是晚饭还是夜...
    夏暖心阅读 178评论 1 0