标签:ios swift 沙盒 nsbundle nsfilemanager
转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44828189通常情况下,每个沙盒包含以下目录及文件:
目录结构如下图所示:
补充1:对于上述描述可以这样举例理解,一个记事本应用,用户写的东西需要保存起来,这些东西是用户自行生成的,则需要放在 Documents 目录里。一个新闻应用,如果需要从服务器下载东西展示给用户看,下载的东西就放在 Library/Caches 目录里。苹果审核对这个要求很严格,主要原因是 iCloud 的同步问题。
补充2:如果想知道真机或者模拟器 App 沙盒路径,可通过在项目中执行下述代码打印获取:let homeDir = NSHomeDirectory() as String println(homeDir)
// 1、获取沙盒根目录 let homeDir = NSHomeDirectory() as String // 2、获取 Documents 目录 let docDirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) as NSArray let docDir = docDirs[0] as String // 3、获取 Caches 目录 let cachesDirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true) as NSArray let cachesDir = cachesDirs[0] as String // 4、获取 Library 目录 let libDirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.LibraryDirectory, NSSearchPathDomainMask.UserDomainMask, true) as NSArray let libDir = libDirs[0] as String // 5、获取 tmp 目录 let tmpDir = NSTemporaryDirectory() as String
// 1、获取 Documents 目录 let docDirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) as NSArray let docDir = docDirs[0] as String // 2、初始化 fileManager let 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。
下图是新建的一个 SandBoxSample 项目的应用包内部目录结构图:
Cocaoa 提供了 NSBundle 类封装了 bundle 操作。
// 获取应用程序的 main bundle var mainBundle = NSBundle.mainBundle() // 使用 main bundle 获取资源路径 var testFilePath = mainBundle.pathForResource("Info", ofType: "plist")
文章最后更新时间:2015年4月2日09:53:39。参考资料如下:
iOS 文件操作:沙盒(SandBox)、程序包(NSBundle)
标签:ios swift 沙盒 nsbundle nsfilemanager
原文地址:http://blog.csdn.net/jinnchang/article/details/44828189