我正在尝试创建一个从网站上拍照的应用程序,并将它们保存到NSDocumentDirectory以供以后使用。到目前为止,我的尝试失败了,我想知道该怎么做。
不需要更多的解释,但这里有一些我的(失败的)尝试:
之一:
NSString *path = @"http://miniwidgit.webs.com/TabRight2.png";
NSFileManager *fmgr = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [[NSString alloc] initWithFormat:@"%@/File.jpg", documentsDirectory];
NSLog(fileName);
NSError *err;
if ([fmgr copyItemAtPath:path toPath:fileName error:&err])
{}
else
{
NSLog([NSString stringWithFormat:@"%@%@.", @"There was an error. The error was: ", err]);
}
二:
NSURL *path = [NSURL URLWithString:@"http://miniwidgit.webs.com/TabRight2.png"];
NSFileManager *fmgr = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [[NSString alloc] initWithFormat:@"%@/File.jpg", documentsDirectory];
NSLog(fileName);
NSError *err;
NSString *image = [[NSString alloc] initWithContentsOfURL:path];
[image writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionExternalRepresentation error:&err];
NSLog([NSString stringWithFormat:@"%@%@.", @"There was an error. The error was: ", err]);
On One,我收到了错误:
错误域= NSPOSIXErrorDomain代码= 2 UserInfo = 0x3b171b0“操作 无法完成。没有这样的文件或目录,“
但这没有意义,因为图像(在我的网站上)存在。
On Two,我收到了错误:
错误域= NSCocoaErrorDomain代码= 517 UserInfo = 0x3b33090“操作 无法完成。 (可可错误517。)“
答案 0 :(得分:4)
这不是文件路径 - 它是HTTP资源的URL。您需要使用其中一个URL加载API(例如NSURLDownload)来下载图像。
使用现在排在第1位的代码,它正在寻找名为“TabRight2.png”的文件,该文件位于名为“miniwidget.webs.com”的目录中,该目录位于名为“http:”的目录中,在当前目录中 - 当然也找不到。
使用第二个,您正在尝试将图像加载到NSString中。在这种情况下很难说出确切的错误是什么,但这是不可取的,可能是罪魁祸首。 NSStrings用于文本,图像可以包含在任何编码中无效的文本序列。您应该使用NSData来存储二进制数据,而不是NSString。