1

我有一个适用于 osx 的 Xcode 4 应用程序。在我的程序中,我有一些地方需要读取和写入 plist 文件。目前我使用了 /users/my name/desktop/name of document plist 的文件路径。但是,当我将应用程序制作成应用程序并将其传输到另一台计算机时,它自然无法找到和读取文件。我应该如何制作文件路径才能在任何计算机上运行。下面是我的文件路径

filepath = @"/Users/Gautambir/Desktop/CustomerNames.plist"
4

1 回答 1

2

您永远不应该对路径进行硬编码。您应该使用各种可用的 API来构建路径。

有几种方法可以构造有效路径。例如,这有效:

NSString* filePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"] stringByAppendingPathComponent:@"CustomerNames.plist"];

或者,您可以使用:

NSString* filePath = [@"~/Desktop/CustomerNames.plist" stringByExpandingTildeInPath];

尽管这些是构建路径、访问特殊位置(例如桌面、文档文件夹或应用程序支持文件夹)的正确方法,但您应该使用该NSSearchPathForDirectoriesInDomains()函数,或者最好使用NSFileManager方法URLsForDirectory:inDomains:URLForDirectory:inDomain:appropriateForURL:create:error:.

这些基于 URL 的方法应始终优先于基于路径的等效方法。Apple 建议所有开发人员尽快支持基于 URL 的方法。

这主要是因为文件 URL 可以存储书签数据,因此如果文件移动,仍然可以解析 URL,而路径不是这种情况,因为路径只是字符串,不能存储元数据。

以下是使用文件管理器查找 URL 的方法:

NSFileManager* fm = [NSFileManager defaultManager];
NSURL* desktopURL = [fm URLForDirectory:NSDesktopDirectory 
                            inDomain:NSUserDomainMask 
                   appropriateForURL:nil
                        shouldCreate:NO
                               error:nil];

NSURL* fileURL = [desktopURL URLByAppendingPathComponent:@"CustomerNames.plist"];
于 2012-04-19T07:54:23.507 回答