Xcode 和 iOS 应用程序数据文件放置默认值
Posted
技术标签:
【中文标题】Xcode 和 iOS 应用程序数据文件放置默认值【英文标题】:Xcode and iOS app data file placements defaults 【发布时间】:2016-01-06 03:49:07 【问题描述】:我对 ios7-iOS9 的理解是否正确:
1) “内置”应用缓存路径是 NSHomeDirectory() + "/Library/Caches/"
2) 应用启动图像和图标放置在 NSBundle.mainBundle().resourcePath! (这映射到哪里?)
3) 我在“xcode - 构建阶段 - 名为“ownassets”的复制包资源”中添加的“蓝色”文件夹放置在...? NSHomeDirectory() + "/Library/"
我只是想让 100% 确定我是否正确理解了文件的放置位置,以便我可以在应用执行期间读取和加载它们(并写入我的缓存)
注意:我意识到发布代码应该使用系统调用来获取路径,因为Apple可能会在未来的iOS版本中更改路径。
注意关于如何获得对您在“构建阶段 > 复制捆绑资源”中添加的文件夹和内容的正常 IO 文件读取访问权限的软管,方法如下:NSBundle.mainBundle().resourcePath! + "/" + 名称文件夹
【问题讨论】:
永远不要使用 NSHomeDirectory 来构建路径。 请记住,现在 URL 比路径更受欢迎。 【参考方案1】:您不应该过多考虑磁盘上的实际位置,而是使用更高级别的系统 API 来查找文件/路径:
缓存目录:
let cacheURL = try NSFileManager.defaultManager().URLForDirectory(.CachesDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true)
捆绑包中的应用资源:
let image = UIImage(named: "imageName")
let path = NSBundle.mainBundle().pathForResource("image", ofType: "png")
子目录中的应用资源:
let path = NSBundle.mainBundle().pathForResource("info", ofType: "dat", inDirectory: "AdditionalResources")
有关详细信息,请参阅the File System Programming Guide。
【讨论】:
我理解(并且将会),但我试图从概念上理解它(即在我的脑海中想象文件结构的样子) 我链接到的文章将回答这些问题。NSHomeDirectory()
是应用程序沙箱目录,NSBundle.mainBundle().bundleURL
是应用程序包,其中包含您在编译时添加的资源。
好的 - 从上面的链接,我可以看到这个“在 iOS 中,库被放置在应用程序数据包中。”,所以我猜“resourcePath”映射到那个(现在,我明白了将来可能不会这样)-无论如何,我稍后会测试路径并报告它们是什么以供参考
实际上,resourcePath
用于编译时资源,例如图像,以及pathForResource
返回的其他内容。你为什么不通过print()
ing 这些路径来测试一下?
我会尽快展开问题以上是关于Xcode 和 iOS 应用程序数据文件放置默认值的主要内容,如果未能解决你的问题,请参考以下文章