0
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"data.plist"];

return [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

该文件存储在我的文档文件夹中。

4

2 回答 2

3

不,他们不是。前者返回应用程序 Documents 目录中名为 data.plist 的文件的路径,后者返回应用程序包中名为 data.plist 的文件的路径,其中所有应用程序的资源、可执行文件等都位于该文件中。

于 2011-06-25T04:09:27.477 回答
2

文档NSSearchPathForDirectoriesInDomains

为指定域中的指定目录创建路径字符串列表。该列表按照您搜索目录的顺序排列。如果 expandTilde 为 YES,波浪号将按照 stringByExpandingTildeInPath 中的说明进行扩展。

从方法的文档NSBundlepathForResource:ofType:

该方法首先在指定包的非本地化资源目录中查找匹配的资源文件。(在 Mac OS X 中,此目录通常称为 Resources,但在 iOS 中,它是主包目录。)如果找不到匹配的资源文件,它会在任何可用的特定语言“.lproj”的顶层查找目录。(特定语言目录的搜索顺序与用户的偏好相对应。)它不会在这些位置的任何其他子目录中递归。

因此前者在目录中查找文件,而后者在包中查找。这些可能并不重合。

于 2011-06-25T04:31:44.567 回答