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 应用程序数据文件放置默认值的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发之-- oc 和 swift混编之自建桥接文件

Xcode 要求在完成处理程序中的返回值名称之前放置 _ [重复]

Snapcraft 放置默认配置文件

文件目录更改每次重启 Swift iOS

iOS 7 / Xcode 5:以编程方式访问设备启动图像

IOS Xcode Storyboard:在已放置的视图后面插入视图