设置统一文件路径

时间:2012-04-19 07:44:42

标签: xcode macos cocoa file plist

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

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

1 个答案:

答案 0 :(得分:2)

你永远不应该硬编码路径。您应该使用可用的various APIs来构建路径。

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

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

或者,您可以使用:

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

虽然这些是构建路径的正确方法,但要访问特殊位置(如Desktop,Documents文件夹或Application Support文件夹),您应该使用NSSearchPathForDirectoriesInDomains()函数,或者最好使用NSFileManager方法URLsForDirectory:inDomains:URLForDirectory:inDomain:appropriateForURL:create:error:

这些基于URL的方法应始终优先于其基于路径的等效方法。 Apple建议所有开发人员尽快支持基于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"];