2012-04-19 98 views
1

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

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

回答

2

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

有几种构建有效路径的方法。举例来说,这个工程:

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

或者,你可以使用:

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

虽然这是正确的方式来建立一个路径,来访问,如桌面的特殊位置,Documents文件夹或应用程序支持文件夹,您应该使用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"]; 
+0

谢谢。像魅力一样工作。 :) – GBSingh 2012-04-19 08:23:23