标签:
通常情况下,每个沙盒包含以下目录及文件:
目录结构如下图所示:
补充1:对于上述描述可以这样举例理解,一个记事本应用,用户写的东西需要保存起来,这些东西是用户自行生成的,则需要放在 Documents 目录里。一个新闻应用,如果需要从服务器下载东西展示给用户看,下载的东西就放在 Library/Caches 目录里。苹果审核对这个要求很严格,主要原因是 iCloud 的同步问题。
补充2:如果想知道真机或者模拟器 App 沙盒路径,可通过在项目中执行下述代码打印获取:let homeDir = NSHomeDirectory() as Stringprintln(homeDir)
// 1、获取沙盒根目录let homeDir = NSHomeDirectory() as String// 2、获取 Documents 目录let docDirs = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArraylet docDir = docDirs[0] as String// 3、获取 Caches 目录let cachesDirs = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true) as NSArraylet cachesDir = cachesDirs[0] as String// 4、获取 Library 目录let libDirs = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true) as NSArraylet libDir = libDirs[0] as String// 5、获取 tmp 目录let tmpDir = NSTemporaryDirectory() as String
// 1、获取 Documents 目录let docDirs = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArraylet docDir = docDirs[0] as String// 2、初始化 fileManagerlet fileManager = NSFileManager.defaultManager()// 3、使用 fileManager 创建目录let testDir = docDir + "/test"fileManager.createDirectoryAtPath(testDir, withIntermediateDirectories: true, attributes: nil, error: nil)// 4、使用 fileManager 创建文件let testFile1 = testDir + "/test1.txt"let testFile2 = testDir + "/test2.txt"fileManager.createFileAtPath(testFile1, contents: nil, attributes: nil)fileManager.createFileAtPath(testFile2, contents: nil, attributes: nil)// 5、使用 fileManager 获取目录下的文件名var files = fileManager.subpathsAtPath(testDir)// 6、使用 fileManager 删除文件fileManager.removeItemAtPath(testFile1, error: nil)
上述代码最终目录结果如下图所示:
iOS 应用都是通过 bundle 进行封装的,可以狭隘地将 bundle 理解为上述沙盒中的 AppName.app 文件。在 Finder 中,会把 bundle 当做一个文件显示从而防止用户误操作导致程序文件损坏,但其实内部是一个目录,包含了图像、媒体资源、编译好的代码、nib 文件等,这个目录称为 main bundle。
Cocaoa 提供了 NSBundle 类封装了 bundle 操作。
// 获取应用程序的 main bundlevar mainBundle = NSBundle.mainBundle()// 使用 main bundle 获取资源路径var testFilePath = mainBundle.pathForResource("logo", ofType: "png")
文章最后更新时间:2015年4月2日09:53:39。参考资料如下:
About Files and Directories
NSFileManager Class Reference
NSBundle Class Reference
Swift iOS 文件操作:沙盒(SandBox)、程序包(NSBundle)
标签:
原文地址:http://www.cnblogs.com/zjoch/p/4702873.html