web-dev-qa-db-ja.com

iPhoneでユーザーのドキュメントディレクトリを見つける最良の方法は何ですか?

Erica SadunのiPhone Developer's Cookbookを読んでいて、質問にぶつかりました。

彼女は本の中で、ユーザーのDocumentsディレクトリを見つける方法はコードであると言っています。

[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

しかし、それは少しもろく、普通のMacのやり方とは似ていません。

NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);

どちらか一方を使用する特定の理由はありますか?

60
bwinton

Objc:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)

迅速:

var paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)

返される配列の最初の要素が必要になります。

92
Ben Gottlieb

これが私のフレームワークで使用するコードです。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
49
Lee

URLを返すNSFileManagerメソッドの使用を検討する必要があります。URLは優先形式です。

let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL

このメソッドは、システム内の既知の共通ディレクトリを見つけることを目的としています。

要求されたディレクトリを識別するNSURLオブジェクトの配列。ディレクトリは、ドメインマスク定数の順序に従って順序付けられ、ユーザードメインの項目が最初に、システムドメインの項目が最後になります。

14
Zelko

私はこれを使用します

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipLocalPath = [documentPath stringByAppendingString:fileName];
0

Swift v3では、次のスニペットを使用しました

var paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
0
Suresh Velusamy