叹落花 / iOS开发UI / IOS普通类型持久化

0 0

   

IOS普通类型持久化

2014-12-24  叹落花
    // 普通类型的数据也可以做数据持久化

// 我们单独写一个方法,用来获取储存文件的路径以及文件的名称和类型

#pragma mark - 实现---获取文件路径的方法

- (NSString *)searchFilePath {

    // 获取目标路径下面的全部文件夹放到数组中 (参数1:路径 参数2:在本地上的 参数3:返回一个完整的路径)

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

    // 获取第一个路径的名称

    NSString *documentPath = [searchedPaths objectAtIndex:0];

    // 添加文件的名称

    NSString *filePath = [documentPath stringByAppendingPathComponent:@"text.txt"];

    return filePath;

}



// 例如,NSString类型, NSArray类型,NSDictionary类型,这三种类型属于普通类型,可以很直接的存入
// 下面是代码:

// 获取目标文件

    NSString *textString = [NSString stringWithFormat:@"测试字符串"];

    NSArray *textArray = [NSArray arrayWithObjects:textString, textString, textString, nil];

    NSDictionary *textDictionary = [NSDictionary dictionaryWithObjects:textArray forKeys:textArray];

    

    // 获取文件管理类,是一个单例对象

    NSFileManager *fileManager = [NSFileManager defaultManager];

    // 判断文件时候存在

    if (![fileManager fileExistsAtPath:[self searchFilePath]]) {

        NSLog(@"文件不存在");

        // 创建文件

        // String类型存入

        [textString writeToFile:[self searchFilePath] atomically:YES encoding:NSUTF8StringEncoding error:nil];

        

        // Array类型存入

        [textArray writeToFile:[self searchFilePath] atomically:YES];

        

        // Dictionary类型存入

        [textDictionary writeToFile:[self searchFilePath] atomically:YES];

        

    } else {

        // 读取文件

        NSString *textStr = [NSString stringWithContentsOfFile:[self searchFilePath] encoding:NSUTF8StringEncoding error:nil];

        NSLog(@"%@", textStr);

        

        NSArray *array = [NSArray arrayWithContentsOfFile:[self searchFilePath]];

        NSLog(@"%@", array);

        

        NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:[self searchFilePath]];

        NSLog(@"%@", dictionary);


        

        // 根据路径删除文件

        [fileManager removeItemAtPath:[self searchFilePath] error:nil];

    }







// 还有就是图片类型,图片类型的数据稍微麻烦一点,需要先将图片转化存入到NSData类型中,然后把NSData类型存入文件中,读取的时候也是首先读出的NSData类型,需要再转为UIImage类型才可以现实
// 下面是代码:

// 获取文件管理单例

    NSFileManager *fileManager = [NSFileManager defaultManager];

    

    // 把图片转为NSData数据类型

    NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"R8-6.jpg"], 1);

    

    // 判断是否存在 不存在在创建,存在则读取

    if (![fileManager fileExistsAtPath:[self searchFilePath]]) {

        // 存储图片

        [imageData writeToFile:[self searchFilePath] atomically:YES];

        NSLog(@"图片存储成功");

    } else {

        NSLog(@"图片读取成功");

        // 取出图片转换为UIImage类型

        UIImage *newImage = [UIImage imageWithContentsOfFile:[self searchFilePath]];

        

        // 显示出图片

        UIImageView *imageView = [[UIImageView alloc] initWithImage:newImage];

        imageView.frame = [[UIScreen mainScreen] bounds];

        [self.view addSubview:imageView];

        [imageView release], imageView = nil  

    }

// 注意,我们在保存图片类型的时候,需要将searchFilePath方法中文件的名称改为后缀为.jpeg的文件。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×