iphone – 如何将图像保存到我的应用程序的tmp目录?
为什么如果我使用NSTemporaryDirectory保存我的图像,图像将保存到
而不是
这是我的代码: -(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 disk if 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中所示)。 <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"]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |