以下是代码:
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
[imageData writeToFile:savedImagePath options:NSDataWritingAtomic error:&error];
if(error != nil)
NSLog(@"write error %@", error);
错误:
write error Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed. (Cocoa error 4.)" UserInfo=0x8b7b850 {NSUnderlyingError=0x8b7d7c0 "The operation couldn’t be completed. No such file or directory", NSFilePath=/Users/alfa-1/Library/Application Support/iPhone Simulator/6.0/Applications/C24B228A-599E-4249-97A7-17775E8A546B/Library/Caches/ChannelListImages/http:/direct.domain.com/files/icons/1-all-cb.jpg, NSUserStringVariant=Folder}
答案 0 :(得分:5)
在将数据写入文件之前。您需要创建该文件夹。请按照以下步骤操作
#define APPLICATION_DATA_DIRECTORY @"Application Data"
+ (NSString *)cachesDirectoryPath
// Returns the path to the caches directory. This is a class method because it's
// used by +applicationStartup.
{
NSString * result;
NSArray * paths;
result = nil;
paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
if ( (paths != nil) && ([paths count] != 0) ) {
assert([[paths objectAtIndex:0] isKindOfClass:[NSString class]]);
result = [paths objectAtIndex:0];
}
result = [result stringByAppendingPathComponent:APPLICATION_DATA_DIRECTORY];
if (![[NSFileManager defaultManager] fileExistsAtPath:result]) {
[[NSFileManager defaultManager] createDirectoryAtPath:result withIntermediateDirectories:YES attributes:nil error:NULL];
}
return result;
}
之后:#define kPhotosDirectoryName @"ApplicationDocuments"
NSMutableString *savePath = [NSMutableString string];
[savePath appendFormat:@"%@/%@",[YOURClass cachesDirectoryPath],kPhotosDirectoryName];
[savePath appendFormat:@"/%@",YOUR_FILE_NAME];
if (![[NSFileManager defaultManager] fileExistsAtPath:savePath]) {
//write the data to file here
}
答案 1 :(得分:1)
试试这个样本。它对我有用。
在.h文件中声明 - (NSString *)datafilepath
-(NSString *) datafilepath{
NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents=[path objectAtIndex:0];
return [documents stringByAppendingFormat:@"/sample.plist"];
}
您想要执行写入功能的任何地方
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
[imageData writeToFile:[self datafilepath]atomically:YES];
if(error != nil)
NSLog(@"write error %@", error);
希望这有帮助!!!