【问题标题】:Document Directory in iPod Touch and iPhoneiPod Touch 和 iPhone 中的文档目录
【发布时间】:2010-11-10 01:19:49
【问题描述】:
我正在设计一个将数据读取到 iPod touch/iPhone 的应用程序,该数据通过 UDP 多播套接字发送给它,我需要将其作为文件存储在文档目录中。 iPhone 或 iPod Touch 上是否存在这种情况?我知道有 NSFileHandle 和 NSFileManager,这是我计划使用的,负责读取和写入文件,但我不确定 iPod touch 的“我的文档”部分在哪里,如果你知道我的话是说。我对 iPod/iPhone 文件目录还不是很熟悉,因此感谢您的帮助!是否有某种“通用”目录可供所有开发人员用来存储他们的文件(如果他们的应用程序有任何参与)?
【问题讨论】:
标签:
objective-c
xcode
ipod-touch
directory-structure
【解决方案1】:
最近,Core Data 应用程序的模板提供了如下代码:
- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
如果 NSSearchPathForDirectoriesInDomains 返回的 NSArray 为空,lastObject 返回 nil,因此代码更简洁。
您应该注意的一件事——从 iOS 5 开始,您不应该将非用户生成的数据放入 Documents 目录。您的应用可能会被拒绝。相反,您应该考虑将此类日志放在Caches 目录中。要获得这个路径,你需要在上面的示例代码中将NSDocumentDirectory替换为NSCachesDirectory。
【解决方案2】:
您应该使用应用程序的 Documents 目录来存储持久文件。您可以使用此函数获取目录的路径,Apple 将其包含在使用 Core Data 的应用程序模板中:
/**
Returns the path to the application's documents directory.
*/
- (NSString *)applicationDocumentsDirectory {
NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}