NSFileManager在初始化文件的时候一不留神就进入陷进

今天调试一个程序,内容是在手机一个本地路径生成一个缓存文件,在生成本地路径的时候犯了一个错误,本着求原因的精神调试了2个小时,终于找到原因了

刚开始断点调试的时候,执行到第13行,这里死活不给写入数据,一直返回NO,看着我都蛋碎了,后来看到打印出来的路径在Library下,想着是不是这里不

允许用户在这里创建数据缓存,果然 把 2行 的 NSDocumentationDirectory 改成 NSDocumentDirectory,之后路径就变成了:

file:///var/mobile/Applications/79D7DD73-74C5-4ECE-BEF7-5988560A8AC2/Documents/436783070;之后这里的路径就可以写入数据了..

修改前:

 1 -(NSURL *)uniqueDocumentURL{
 2     NSArray *documentDictiories = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentationDirectory inDomains:NSUserDomainMask];//注意这里的NSDocumentationDirectory
 3     NSString * unique = [NSString stringWithFormat:@"%.0f",floor([NSDate timeIntervalSinceReferenceDate])];
 4     id URLObject = [documentDictiories firstObject] ;
 5     return [URLObject URLByAppendingPathComponent:unique];
 6 }
 7
 8 -(NSURL *)imageURL{
 9     if (!_imageURL && self.image) {
10         NSURL * url = [self uniqueDocumentURL];
11         if (url) {
12             NSData * imageData = UIImageJPEGRepresentation(self.image, 1.0);
13             if ([imageData writeToURL:url atomically:YES]) {//问题
14                 _imageURL = url;
15             }
16         }
17     }
18     return _imageURL;
19 }
20
21 //控制台打印
22 Printing description of url:
23 file:///var/mobile/Applications/16614FF0-B641-4938-8BF8-91658759D4D8/Library/Documentation/436783128

修改后:

 1 - (NSURL *)uniqueDocumentURL
 2 {
 3     NSArray *documentDirectories = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
 4     NSString *unique = [NSString stringWithFormat:@"%.0f", floor([NSDate timeIntervalSinceReferenceDate])];
 5     return [[documentDirectories firstObject] URLByAppendingPathComponent:unique];
 6 }
 7
 8 - (void)setImage:(UIImage *)image
 9 {
10     self.imageView.image = image;
11
12     // when image is changed, we must delete files we‘ve created (if any)
13     [[NSFileManager defaultManager] removeItemAtURL:_imageURL error:NULL];
14     [[NSFileManager defaultManager] removeItemAtURL:_thumbnailURL error:NULL];
15     self.imageURL = nil;
16     self.thumbnailURL = nil;
17 }
18
19
20 Printing description of url:
21 file:///var/mobile/Applications/79D7DD73-74C5-4ECE-BEF7-5988560A8AC2/Documents/436783070
时间: 2024-11-03 05:33:38

NSFileManager在初始化文件的时候一不留神就进入陷进的相关文章

[C++基础]一个比较常用的配置文件/初始化文件读取程序

在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中.这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改. 本文将分享一段常用代码,用于读取配置文件中的信息.本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题.具体操作如下: 1. 首先用记

linux环境: shell初始化文件, for TCSH, CSH

TCSHELL, CSHELL 配置文件 全局配置文件 /etc/csh.cshrc个人配置文件 ~/.cshrc或~/.tcshrc 参考: 1.配置你的csh/tcsh,  https://wiki.freebsdchina.org/howto/c/config_your_csh 2.我的.cshrc常用设置 http://biancheng.dnbcw.info/bsd/260256.html 我使用csh,喜欢在.cshrc 中添加如下的内容:#给ls增加眼色,给目录名后面加上 '/'a

实现常用的配置文件/初始化文件读取的一个C程序

在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中.这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改. 本文将分享一段常用代码,用于读取配置文件中的信息.本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题.具体操作如下: 1. 首先用记

smarty初始化文件

为了smarty初始化文件能方便其他目录下的脚步包含使用,应该将初始化文件里的引入smarty类及其他路径设置为全局路径,而不是相对路径 另外,如果模板里有文件的路径的引用,一定要是相对PHP脚本文件的,而不是模板文件自己.因为访问的是PHP脚步文件,而不是模板文件,模板只是通过smarty引擎加载到PHP里

linux(十一)之初始化文件

前面写了很多linux的知识,其实很多都是命令的,所以要去多多的练习才能学的更好,加油为了好工作. 要么现在懒惰,未来讨饭.要么现在努力,未来惬意. 一.初始化文件概述 1.1.概述 系统初始化文件是给系统做配置信息的,最重要的系统信息是环境变量的配置. 初始化文件分为系统级别和用户级别在shell为bash时: 1)系统级别的初始化文件: 针对所有用户都有效果的. /etc/profile 2)用户级别的初始化文件: 针对某一个用户有效果的. ~/.bashrc 1.2.设置环境变量 设置方式

FTP初始化文件.netrc使用技巧[转发]

FTP初始化文件.netrc使用技巧 FTP(文件传输)和E-mail(电子邮件).Telnet(远程登录)一样,是 Internet的三大主要功能之一.因为使用频繁,用户往往会遇到各种 各样的问题,合理利用FTP命令的初始化文件.netrc,使运行FTP后自动 执行某些FTP的内部命令,可有效地克服各种使用中的不便,极大地方 便FTP的使用者. FTP中有几十个命令,在.netrc中应该设置的大致有如下几条: 1.default login<login_name>password<pa

JAVA初始化文件代码

//初始化路径 File file = new File(SavePath); if (!file.exists()) { file.mkdirs(); } //初始化文件 String filePath=SavePath+fileName; file = new File(filePath); if (!file.exists()) { file.createNewFile(); } 原文地址:https://www.cnblogs.com/caichaoxiang919/p/10980950

Xilinx 中Block ram的初始化文件.coe建立

http://www.eefocus.com/guozhiyang/blog/14-03/302479_5e3a4.html 1.在Matlab中生成正余弦波形的浮点值,并量化为16bit定点波形数值: 另一种方法: Xilinx的ROM的初始化是一件很麻烦的事情,要导入Coe文件. Alteral是mif和hex文件,有专门的软件可以生成. coe文件的格式如下: MEMORY_INITIALIZATION_RADIX=10; MEMORY_INITIALIZATION_VECTOR= 512

各种软核处理器二进制文件FPGA初始化文件生成程序

不管是MIPS, Nios II, MicroBlaze, MSP430, 8051, OpenRISC, OpenSPARC, LEON2/LEON3等等软核处理器,在FPGA上实现的时候我们通常需要一部分片上RAM存储bootloader,可以使用gcc的objcopy把bootloader的text, exception vector, rodata, data or bss等你需要的内容copy出来,可以通过-O binary生成二进制文件,可以通过-j .section提取你要的sec