2016年の回答を更新:
ユーザーが個人として明示的に受け入れ、iCloudスペースにバックアップされる可能性のあるデータは、ユーザーの「ドキュメント」ディレクトリに書き込む必要があります。
アプリケーションに属し、アプリケーションを拡張するデータ(たとえば、拡張ユーザーはダウンロードできます...)がバンドルに含まれていないデータは、appIDのタイトルを持つ「ApplicationSupport/」ディレクトリのサブフォルダーに書き込む必要があります。「キャッシュ」ディレクトリにすることもできます。
寿命の短いデータは、アプリケーションのtmpディレクトリに保存できます。この場合、NSTemporaryDirectory()を使用して「tmp」ディレクトリを取得できます。さらにヘルプが必要な場合は、このリンクを確認してください。
説明については、「アプリ固有のファイルを保存する場所の決定」のセクションにあるこの公式iOS開発Appleページを確認してください。
以下は、NSURLをこれらのディレクトリに返し、あなたのようなものをより簡単にするように設計されたSwiftの3つの関数です。
Swift:
func GetDocumentsDirectory()->NSURL{
//returns User's "Documents" directory
//something like this on a real device : file:///private/var/mobile/Containers/Data/Application/APPID/Documents/
//something like this on the simulator : file:///Users/MACUSERID/Library/Developer/CoreSimulator/Devices/SIMDEVICEID/data/Containers/Data/Application/APPUUID/Documents/
let filemgr = NSFileManager.defaultManager()
let docsDirURL = try! filemgr.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true)
return docsDirURL
}
func GetApplicationSupportDirectory()->NSURL{
//returns Application's support directory
//something like this on a real device : file:///private/var/mobile/Containers/Data/Application/APPID/Library/Application%20Support/YOURAPPBUNDLEID/
//something like this on the simulator : file:///Users/MACUSERID/Library/Developer/CoreSimulator/Devices/SIMDEVICEID/data/Containers/Data/Application/APPUUID/Library/Application%20Support/YOURAPPBUNDLEID/
let AllDirectories : [NSURL]
var ApplicationSupportDirectory : NSURL=NSURL.init()
var ApplicationDirectory : NSURL=NSURL.init()
AllDirectories=NSFileManager.defaultManager().URLsForDirectory(.ApplicationSupportDirectory, inDomains: .UserDomainMask)
if AllDirectories.count>=1{
ApplicationSupportDirectory=AllDirectories[0]
}
if !ApplicationSupportDirectory.isEqual(nil) {
ApplicationDirectory=ApplicationSupportDirectory.URLByAppendingPathComponent(NSBundle.mainBundle().bundleIdentifier!)
}
return ApplicationDirectory
}
func GetTemporaryDirectory()->NSURL{
//returns Application's temporary directory
//something like this on a real device : file:///private/var/mobile/Containers/Data/Application/APPID/tmp/
//something like this on the simulator : file:///Users/MACUSERID/Library/Developer/CoreSimulator/Devices/SIMDEVICEID/data/Containers/Data/Application/APPUUID/tmp/
return NSURL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
}