我有一個應用程序在Xcode 4 OSX。在我的程序中,我有一些地方需要讀取和寫入plist文件。目前我使用了文件路徑/ users /我的名字/桌面/文件plist的名字。然而自然,當我將應用程序放入應用程序並將其傳輸到另一臺計算機時,它無法找到並讀取這些文件。我應該如何製作文件路徑,以便它可以在任何計算機上運行。下面是我的文件路徑,我有設置統一的文件路徑
filepath = @"/Users/Gautambir/Desktop/CustomerNames.plist"
我有一個應用程序在Xcode 4 OSX。在我的程序中,我有一些地方需要讀取和寫入plist文件。目前我使用了文件路徑/ users /我的名字/桌面/文件plist的名字。然而自然,當我將應用程序放入應用程序並將其傳輸到另一臺計算機時,它無法找到並讀取這些文件。我應該如何製作文件路徑,以便它可以在任何計算機上運行。下面是我的文件路徑,我有設置統一的文件路徑
filepath = @"/Users/Gautambir/Desktop/CustomerNames.plist"
你永遠不應該,硬編碼路徑。您應該使用可用的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"];
謝謝。像魅力一樣工作。 :) – GBSingh 2012-04-19 08:23:23