2015-11-04 19 views
2
NSString *path = dict[@"fileURL"]; 
NSData *imageData = [NSData dataWithContentsOfFile:path]; 

的imageData为nulldataWithContentsOfFile返回null

dict[@"fileURL"] = 
/var/mobile/Containers/Data/Application/0906AB53-CE1F-45EF-8E00-9D0B7C98956C/Documents/ccc/image/1446625127.png 

我下载设备容器和图像确实存在。 有什么问题?

+0

你如何指定fileurl? –

+0

动态创建路径,不保存整个路径,而是保存相对路径 –

+0

为什么路径是动态的? – klient

回答

1

无法取回您的文件。使用-dataWithContentsOfFile:options:error:找出失败的原因。

NSError* error = nil; 
NSString *path = dict[@"fileURL"]; 
NSData *data = [NSData dataWithContentsOfFile:path options: 0 error: &error]; 
if (data == nil) 
{ 
    NSLog(@"Failed to read file, error %@", error); 
} 
else 
{ 
    // parse the value 
} 
+0

原因是此路径与我保存的路径不同,所以旧路径中没有文件存在。 – klient

+0

在设备/ Simutaor如果你运行它一次,每次机会的路径 –

+0

保存相关的路径不保存整个路径 –

0

我的事情,你应该需要使用[NSFileManager defaultManager]存储和获取应用程序中的存储图像,而不是写静态路径。

静态路径可以与模拟器配合使用,但在真实环境中,您应该有实际的路径。所以[NSFileManager defaultManager]会帮助你。

if([[NSFileManager defaultManager] fileExistsAtPath:filepath) 
{ 
    NSData *data = [[NSFileManager defaultManager] contentsAtPath:filepath]; 
} 
else 
{ 
    NSLog(@"File not exits"); 
} 

filepath您只需要传递文件夹和文件名。不像你的完整路径。

IE。

filepath = "Documents/ccc/image/1446625127.png"; 

注: 这不是一个实际的答案。这将帮助您将图像管理到应用程序存储中。