Đây là phương pháp ưa thích trong đó sử dụng URL để có được một liên kết trực tiếp vào thư mục tmp và sau đó trả về một URL tập tin (pkm.jpg) cho thư mục đó:
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)")
Lưu ý rằng một lỗi có thể không được xử lý!
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]);
Lưu ý rằng một số phương pháp vẫn yêu cầu một con đường như chuỗi, sau đó sử dụng [fileURL path]
để trả lại con đường như chuỗi (như được hiển thị ở trên trong NSLog). Khi nâng cấp một ứng dụng hiện tại tất cả các file trong thư mục:
<Application_Home>/Documents/
<Application_Home>/Library/
được đảm bảo để được bảo quản từ phiên bản cũ (trừ <Application_Home>/Library/Caches
thư mục con). Sử dụng thư mục Documents
cho các tệp bạn có thể muốn người dùng có quyền truy cập và thư mục Library
cho các tệp mà Ứng dụng sử dụng và Người dùng sẽ không nhìn thấy.
Một còn cách có thể để có được một địa chỉ vào thư mục tmp, bằng cách đầu tiên nhận được thư mục Document và tước các thành phần đường dẫn cuối cùng và sau đó thêm các thư mục tmp:
NSURL *documentDir = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
NSURL *tmpDir = [[documentDir URLByDeletingLastPathComponent] URLByAppendingPathComponent:@"tmp" isDirectory:YES];
NSLog(@"tmpDir: %@", [tmpDir path]);
Sau đó, chúng ta có thể giải quyết một tập tin đó, tức là pkm.jpg như ở đây:
NSString *fileName = @"pkm";
NSURL *fileURL = [tmpDir URLByAppendingPathComponent:fileName isDirectory:NO];
fileURL = [fileURL URLByAppendingPathExtension:@"jpg"];
Có thể thực hiện tương tự với các chuỗi được sử dụng trên hệ thống iOS cũ, nhưng phương pháp URL đầu tiên ở trên là phương pháp được đề xuất ngay bây giờ (trừ khi bạn đang viết thư cho các hệ thống cũ hơn: iPhone OS 2 hoặc 3):
NSString *tmpDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
tmpDir = [[tmpDir stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"tmp"];
NSString *filePath = [[tmpDir stringByAppendingPathComponent:@"pkm"] stringByAppendingPathExtension:@"jpg"];
Bài đăng này giải thích tất cả thư mục ứng dụng iOS, lưu, xóa http://kmithi.blogspot.in/2012/08/ios-application-directory-structure.html – mithilesh
'UIImageJPEGRepresentation()' đã trả về 'NSData * '- tại sao bạn truyền nó tới' dataWithData: 'trước khi sử dụng nó? Tôi tự hỏi nếu bạn biết điều gì đó mà tôi không ... – ArtOfWarfare