最近做的项目中要存储一组图片数据,图片带有name,date等属性,处理办法是讲image图片直接存在沙盒documents文件中,再使用plist文件存储图片属性和image路径。

存入图片:

- (void)savePhotos:(NSArray *)photos {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistPath = [[paths objectAtIndex:] stringByAppendingPathComponent:@"photo_info.plist"];
NSString *filePath = [[paths objectAtIndex:] stringByAppendingPathComponent:@"Image"];
NSLog(@"%@", filePath); NSFileManager* fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:plistPath]) {
[fileManager createFileAtPath:plistPath contents:nil attributes:nil];
}
if (![fileManager fileExistsAtPath:filePath]) {
[fileManager createDirectoryAtPath:filePath withIntermediateDirectories:NO attributes:nil error:nil];
} NSMutableArray *savePhotos = [[NSMutableArray alloc] init]; for (Photo *photo in photos) {
NSMutableDictionary *info = [[NSMutableDictionary alloc]init]; NSString *imagePath = [filePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpg", photo.name]];
[UIImagePNGRepresentation(photo.image)writeToFile:imagePath atomically:YES];
[info setObject:imagePath forKey:@"ImagePath"];
[info setObject:photo.name forKey:@"Name"];
[info setObject:photo.tags forKey:@"Tags"];
[info setObject:photo.date forKey:@"Date"]; [savePhotos addObject:info];
}
[savePhotos writeToFile:plistPath atomically:YES];
}

读取图片:

- (NSArray *)loadPhotosFromDisk {
//从本地读取图片
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistPath = [[paths objectAtIndex:] stringByAppendingPathComponent:@"photo_info.plist"]; NSArray *photosArr = [NSArray arrayWithContentsOfFile:plistPath];
for (NSDictionary *dic in photosArr) {
Photo *photo = [[Photo alloc] init];
photo.image = [UIImage imageWithContentsOfFile:[dic valueForKey:@"ImagePath"]];
photo.name = [dic valueForKey:@"Name"];
photo.tags = [dic valueForKey:@"Tags"];
photo.date = [dic valueForKey:@"Date"];
[self.photos addObject:photo];
} return self.photos;
}

iOS笔记之文件读写的更多相关文章

  1. iOS数据持久化文件读写之偏好设置

    很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能.每个应用都有个NSUserDefaults实例,通过它来存取偏好设置.比如, ...

  2. Cocos2d-x在win32,android和IOS下的文件读写问题

    最近在学习和使用Cocos2d-x框架,虽然说的是跨平台,但是在用VS进行开发,然后移植到android或IOS下,也可能会出现各种问题,需要做细微的调整. 例如我在做文件读写操作的时候,很可能在wi ...

  3. 转载-Python学习笔记之文件读写

    Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...

  4. 【java学习笔记】文件读写(IO流)

    1.字节流 FileInputStream.FileOutputStream ①FileInputStream import java.io.FileInputStream; public class ...

  5. C语言笔记 10_文件读写&预处理器

    文件读写 上一章我们讲解了 C 语言处理的标准输入和输出设备.本章我们将介绍 C 程序员如何创建.打开.关闭文本文件或二进制文件. 一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节.C ...

  6. Python学习笔记九-文件读写

    1,读取文件: f=open('目录','读写模式',encoding='gbk,error='egiong') 后三项可以不写但是默认是' r'读模式:open函数打开的文件对象会自动加上read( ...

  7. python学习笔记 IO 文件读写

    读写文件是最常见的IO操作.python内置了读写文件的函数. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统完成的,现代操作系统不允许普通的程序直接对磁盘进行操作,所以, 读写 ...

  8. hadoop笔记-hdfs文件读写

    概念 文件系统 磁盘进行读写的最小单位:数据块,文件系统构建于磁盘之上,文件系统的块大小是磁盘块的整数倍. 文件系统块一般为几千字节,磁盘块一般512字节. hdfs的block.pocket.chu ...

  9. java笔记----property文件读写

    package com.test.property; import java.io.BufferedInputStream; import java.io.File; import java.io.F ...

随机推荐

  1. git-【三】理解工作区与暂存区的区别

    基本概念 工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外).或者以后需要再新建的目录文件等等都属于工作区范畴.       版本库(Repository ...

  2. Android ContentResolver

    在Android 应用程序之间数据共享—-ContentResolver中,已经说明了Android是如何实现应用程序之间数据共享的,并详细解析了如何获取其他应用 程序共享的数据.ContentPro ...

  3. 2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) Solution

    A. Altruistic Amphibians Upsolved. 题意: $有n只青蛙,其属性用三元组表示 <l_i, w_i, h_i> l_i是它能跳的高度,w_i是它的体重,h_ ...

  4. zoj3822

    这题说得是给了一个n*m的棋盘,每天在这个棋盘中放置一个棋子,不能放在之前已经摆放过得地方,求最后使得每行每列都有至少一个棋子的期望天数是多少,这样我们考虑怎么放,放哪里,显然数据大而且不知道状态怎么 ...

  5. Python numpy 安装以及处理报错 is not a supported wheel on this platform

    1.    安装 1)去这里搜索https://pypi.org/ 2)搜索框输入numpy 3)一般第一个就是搜索到的 4)点进去 5) Download files 点进去,找自己的版本 6)nu ...

  6. C++ string和C风格字符串

    https://msdn.microsoft.com/en-us/library/syxtdd4f.aspx#basic_string__replace If you need to convert ...

  7. Linux笔记 #05# 断开远程连接后保持程序运行

    教程:Linux 技巧:让进程在后台可靠运行的几种方法 网上搜索了一下,方法很多,选用最流行的 screen 命令参考:http://man.linuxde.net/screen 1. 安装 root ...

  8. pyDay16

    内容来自廖雪峰的官方网站. 1.Python内建的filter()函数用于过滤序列. 2.和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数 ...

  9. wamp server 3.0.0 修改默认浏览器,软件语言和配置文件编辑器

    改默认IE浏览器为Chrome: wampmanager.conf : navigator ="C:\Program Files (x86)\Google\Chrome\Applicatio ...

  10. 20145315 《Java程序设计》实验四实验报告

    20145315 <Java程序设计>实验四实验报告 第一步 安装Android Studio 按教程安装即可,安装过程中需要配置JAVA_HOME环境变量为jdk安装目录. 第二步 在I ...