iOS 持久化存储-沙盒文件增删查

#pragma mark ————————— 查询文件内容 —————————————

+ (id)fetchPlistFromName:(NSString *)name {

    

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *path=[paths    objectAtIndex:0];

    NSLog(@"path = %@",path);

    NSString *allNmme = [NSString stringWithFormat:@"%@.plist",name];

    NSString *filename=[path stringByAppendingPathComponent:allNmme];

    id arr = [NSMutableArray arrayWithContentsOfFile:filename];

    NSLog(@"查询结果=%@=",arr);

    return arr;

}


#pragma mark ————————— 写入 —————————————

+ (BOOL)addplistFromName:(NSString *)name data:(id)data {

    NSLog(@"写入plist=%@=",data);

    //1. 创建一个plist文件

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *path = [paths    objectAtIndex:0];

    NSLog(@"path = %@",path);

    NSString *allNmme = [NSString stringWithFormat:@"%@.plist",name];

    NSString *filename=[path stringByAppendingPathComponent:allNmme];

    if ([self isPlistFileExists:name]==YES) {

        // 获取旧数据 新数据组合写入

    NSMutableArray *farr = [NSMutableArray array];

     farr = [self fetchPlistFromName:name];

        if (farr.count > 0) {

            // 查询后结果 添加上数据

            [farr addObject:data];

            NSLog(@"有原始数据 =  %@",farr);

            return   [farr writeToFile:filename atomically:YES];

        }else{

            NSLog(@"无原始数据 =  %@",farr);

            NSMutableArray *arrall = [NSMutableArray array];

            [arrall addObject:data];

            return   [arrall writeToFile:filename atomically:YES];

        }

    }else{

        NSFileManager* fm = [NSFileManager defaultManager];

        // 创建plist

        [fm createFileAtPath:filename contents:nil attributes:nil];

        // 写入plist

        NSMutableArray *arrall = [NSMutableArray array];

        [arrall addObject:data];

        return    [arrall writeToFile:filename atomically:YES];

    }

}


#pragma mark ————————— 删除单个 —————————————

+ (void)delFromName:(NSString *)name index:(NSUInteger)index {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *path = [paths    objectAtIndex:0];

    NSLog(@"path = %@",path);

    

    NSString *allNmme = [NSString stringWithFormat:@"%@.plist",name];

    

    NSString *filename=[path stringByAppendingPathComponent:allNmme];

    if ([self isPlistFileExists:name]==YES) {

        // 获取旧数据 新数据组合写入

        NSMutableArray *farr = [NSMutableArray array];

        farr = [self fetchPlistFromName:name];

        

        // 查询后结果 添加上数据

        [farr removeObjectAtIndex:index];

            

        [farr writeToFile:filename atomically:YES];

    }else{

    }

}


#pragma mark ————————— 判断沙盒中名为plistname的文件是否存在 —————————————

+ (BOOL) isPlistFileExists:(NSString *)name{

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *path=[paths    objectAtIndex:0];

    NSLog(@"path = %@",path);

    NSString *allNmme = [NSString stringWithFormat:@"%@.plist",name];

    NSString *filename=[path stringByAppendingPathComponent:allNmme];

    NSFileManager *fileManager = [NSFileManager defaultManager];

    if([fileManager fileExistsAtPath:filename] == NO) {

        NSLog(@"plistname的文件 NO 存在");

        return NO;

    }else{

        NSLog(@"plistname的文件存在");

        return YES;

    }

}


#pragma mark ————————— 删除文件 —————————————

+ (BOOL)deletePlistFromPlistNmame:(NSString *)name {

     NSString *allNmme = [NSString stringWithFormat:@"%@.plist",name];

    //清除plist文件,可以根据我上面讲的方式进去本地查看plist文件是否被清除

    NSFileManager *fileMger = [NSFileManager defaultManager];

    NSString *xiaoXiPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:allNmme];

    //如果文件路径存在的话

    BOOL bRet = [fileMger fileExistsAtPath:xiaoXiPath];

    

    if (bRet) {

        NSLog(@"清空了屏蔽");

        NSError *err;

       BOOL remove =  [fileMger removeItemAtPath:xiaoXiPath error:&err];

        return remove;

    }else{

        NSLog(@"不存在");

        return YES;

    }

}

猜你喜欢

转载自blog.csdn.net/saw471/article/details/75634150
今日推荐