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

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

2017-07-21 11:06 204 查看
#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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: