2012-04-19 155 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