在我的iOS应用中,我正在将内容从网络下载到我的/ Library / Caches目录中。我想将此目录表示为NSBundle,以便更好地兼容我们正在使用的一些外部API。 (这样,我们可以随时将[[NSBundle mainBundle] pathForResource ...]改为[myBundle pathForResource ...]。)
以下似乎工作正常:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString* cachesDirectory = [paths objectAtIndex:0];
NSBundle* bundle = [NSBundle bundleWithPath:cachesDirectory];
更好的是,bundle反映了我对/ Library / Caches目录所做的任何更改。但是,我担心因为caches目录在技术上不是每Apple's docs个捆绑包。也就是说:
我无法在任何地方找到这种动态创建的,仅限资源的捆绑包。这可以吗?
答案 0 :(得分:2)
是的,拥有一个仅限资源的捆绑包是绝对可以的。你引用的一些verbage预先存在iOS。在OS X中,您可以动态加载可执行代码,这些代码在iOS中特别排除。
本地化是仅限资源包的示例。
编辑:
尽管文档格式可以利用捆绑结构 组织他们的内容,一般不考虑文件 捆绑在最纯粹的意义上。实现为的文档 目录并被视为opaque类型被视为文档 包,无论其内部格式如何。有关的更多信息 文档包,请参阅“Document Packages。”
说:
有多种方法可以访问文档包的内容。 因为文档包是一个目录,所以您可以访问 使用任何适当的文件系统例程来记录文档的内容。如果你 使用捆绑结构为您的文档包,您也可以使用 NSBundle或CFBundleRef例程。束结构的使用是 特别适合存储多个的文档 本地化。
另请注意,Apple一直在宣传它正在尽量减少使用“path”/ NSString API以支持URL API,尽管现有的路径API无疑将继续用于更多主要的OS版本。
答案 1 :(得分:2)
/Library/Caches
目录将缺少捆绑包中所需的某些标准文件,例如Contents/
目录或Contents/Info.plist
文件,因此在处理为{{1}}目录时可能无法正常运行一。谨慎行事。