2010-06-23 26 views
1

我想使用pathForResource,但它看起來不像它會創建路徑(如果不存在的話)。所以我想通過執行以下操作手工創建一個:iPhone pathForRes vs bundlePath

NSString *path = [NSString stringWithFormat:@"%@/%@.plist",[[NSBundle mainBundle] bundlePath],@"myFileName"]; 

我動態創建的文件,所以我需要訪問他們,我有Build and Run後應用。但它把該項目的唯一ID文件夾,以便路徑出來的東西,如:

/Users/RyanJM/Library/Application Support/iPhone Simulator/3.0/Applications/80986747-37FD-49F3-9BA8-41A42AF7A4CB/MyApp.app/myFileName.plist 

但是唯一ID改變每次我做構建時間。創建一條我可以每次獲得的路徑的正確方法是什麼(即使在模擬器中)?

謝謝。

更新:編輯該問題,希望能夠幫助任何未來遇到它的人。

更新:IWasRobbed回答了創建路徑URL的正確方法。但是我能找到的最佳答案是Brad Parks。雖然,我希望有一個更清潔的方式。

+0

構建之前或構建之前? – nduplessis 2010-06-23 22:26:29

+0

我不確定我是否理解你的問題。我需要訪問構建之間的相同路徑(在模擬器中測試程序時)。 – RyanJM 2010-06-24 03:12:46

+0

他很明顯地動態創建它們,所以他需要在構建之後訪問它們(即一旦程序正在運行,它沒有事先知道該文件在包中),即使他用不同的方式說出它。 – iwasrobbed 2010-06-24 05:06:05

回答

1

與你措辭你的問題的辦法,這就是你如何讀取已包含在捆綁包構建之前的plist:如果您要訪問每個應用程序都有一個獨特的目錄

NSString *propertyListPath = [[NSBundle mainBundle] pathForResource:SomeString ofType:@"plist"]; 

爲您創建一個構建之後文件存儲區,您可以使用此:

#define kFilename @」data.plist」 

- (NSString *)dataFilePath { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

return [documentsDirectory stringByAppendingPathComponent:kFilename]; 
} 

然後你可以檢查,並做一些數據處理的位置:

NSString *filePath = [self dataFilePath]; 

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 
// do something with data here 
} 

如果您購買/閱讀Beginning iPhone 3 Development特別是第11章,他會翻閱數據持久性(這是本示例的來源),那麼您將省去很多麻煩。這是一本很棒的書。

+0

但是如果資源不存在,pathForResource返回nil。那麼你如何爲新資源創建路徑? – RyanJM 2010-06-24 03:11:51

+0

查看更新的答案。 – iwasrobbed 2010-06-24 05:29:00

+0

感謝您的更新。我將不得不檢查那本書。 – RyanJM 2010-06-24 21:14:31