これは、URLを使用してtmpディレクトリへの直接リンクを取得し、そのディレクトリのファイルURL(pkm.jpg)を返す推奨される方法です。
Swift 4.1
let url = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
.appendingPathComponent("pkm", isDirectory: false)
.appendingPathExtension("jpg")
// Then write to disk
if let data = UIImageJPEGRepresentation(image, 0.8) {
do {
try data.write(to: url)
} catch {
print("Handle the error, i.e. disk can be full")
}
}
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
と、アプリが使用し、ユーザーに表示されないようにするファイル用のフォルダーを使用します。
もう1つの長い方法は、最初にDocumentディレクトリを取得し、最後のパスコンポーネントを削除してから、tmpフォルダを追加することにより、tmpディレクトリへのURLを取得することです。
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, NSUserDomainMask, YES) firstObject];
tmpDir = [[tmpDir stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"tmp"];
NSString *filePath = [[tmpDir stringByAppendingPathComponent:@"pkm"] stringByAppendingPathExtension:@"jpg"];