iphone – 如何将图像保存到我的应用程序的tmp目录?

iphone – 如何将图像保存到我的应用程序的tmp目录?,第1张

概述为什么如果我使用NSTemporaryDirectory保存我的图像,图像将保存到 /var/folders/oG/oGrLHcAUEQubd3CBTs-1zU+++TI/-Tmp-/ 而不是 /Users/MyMac/Library/Application Support/iPhone Simulator/4.3.2/Applications/A685734E-36E9-45DD-BBE7-0A 为什么如果我使用NstemporaryDirectory保存我的图像,图像将保存到

/var/folders/oG/oGrLHcAUEQubd3CBTs-1zU+++TI/-Tmp-/

而不是

/Users/MyMac/library/Application Support/iPhone Simulator/4.3.2/Applications/A685734E-36E9-45DD-BBE7-0A46F8F91DAF/tmp

这是我的代码:

-(Nsstring *)tempPath{    return NstemporaryDirectory();}-(voID) saveMyFoto{    Nsstring *urlNahledu = [Nsstring stringWithFormat:@"%@%@%@",@"http://www.czechmat.cz",urlFotky,@"_100x100.jpg"];    NSLog(@"%@",urlNahledu);    UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlNahledu]]];    NSData *data = [NSData dataWithData:UIImageJPEGRepresentation(image,0.8f)];    NSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES);    NSLog(@"%@    %@",paths,[self tempPath]);    Nsstring *documentsDirectory = [paths objectAtIndex:0];    Nsstring *localfilePath = [documentsDirectory stringByAppendingPathComponent:@"pkm.jpg"];    [data writetofile:localfilePath atomically:YES];}
解决方法 这是首选方法,它使用URL来直接获取tmp目录的链接,然后返回该目录的文件URL(pkm.jpg):

Swift 4.0

let tmpuRL = URL(fileURLWithPath: NstemporaryDirectory(),isDirectory: true)    .appendingPathComponent("pkm")    .appendingPathExtension("jpg")print("filepath: \(tmpuRL)")// Then write to diskif let url = tmpuRL,let data = UIImageJPEGRepresentation(image,0.8) {    // Use do-catch for error handling,disk can be full etc.    try? data.write(to: url)}

Swift 3.1

let tmpuRL = try! URL(fileURLWithPath: NstemporaryDirectory(),isDirectory: true)                    .appendingPathComponent("pkm")                    .appendingPathExtension("jpg")print("filepath: \(tmpuRL)")

请注意,未处理可能的错误!

Swift 2.0

let tmpDirURL = NSURL.fileURLWithPath(NstemporaryDirectory(),isDirectory: true)let fileURL = tmpDirURL.URLByAppendingPathComponent("pkm").URLByAppendingPathExtension("jpg")print("filePath: \(fileURL.path)")

Objective-C的

NSURL *tmpDirURL = [NSURL fileURLWithPath:NstemporaryDirectory() isDirectory:YES];NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"pkm"] URLByAppendingPathExtension:@"jpg"];NSLog(@"fileURL: %@",[fileURL path]);

请注意,某些方法仍然以字符串形式请求路径,然后使用[fileURL path]将路径作为字符串返回(如上面NSLog中所示)。
升级当前App时文件夹中的所有文件:

<Application_Home>/documents/<Application_Home>/library/

保证保留旧版本(不包括< Application_Home> / library / Caches子目录)。将documents文件夹用于您可能希望用户有权访问的文件,并使用library文件夹找到App使用且用户不应看到的文件。

另一个更长的方法可能是获取tmp目录的url,首先获取document目录并剥离最后一个路径组件,然后添加tmp文件夹:

NSURL *documentDir = [[[NSfileManager defaultManager] URLsForDirectory:NSdocumentDirectory inDomains:NSUserDomainMask] firstObject];NSURL *tmpDir = [[documentDir URLByDeletingLastPathComponent] URLByAppendingPathComponent:@"tmp" isDirectory:YES];NSLog(@"tmpDir: %@",[tmpDir path]);

然后我们可以在那里找到一个文件,即pkm.jpg,如下所示:

Nsstring *filename = @"pkm";NSURL *fileURL = [tmpDir URLByAppendingPathComponent:filename isDirectory:NO];fileURL = [fileURL URLByAppendingPathExtension:@"jpg"];

使用字符串可以实现相同的功能,这在旧的iOS系统中使用,但上面的第一个URL方法现在是推荐的方法(除非您写入旧系统:iPhone OS 2或3):

Nsstring *tmpDir = [NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES) firstObject];tmpDir = [[tmpDir stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"tmp"];Nsstring *filePath = [[tmpDir stringByAppendingPathComponent:@"pkm"] stringByAppendingPathExtension:@"jpg"];
总结

以上是内存溢出为你收集整理的iphone – 如何将图像保存到我的应用程序的tmp目录?全部内容,希望文章能够帮你解决iphone – 如何将图像保存到我的应用程序的tmp目录?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存