2010-06-07 90 views
1

捆綁資源可以在iPhone模擬器與設備(在我的情況下,iPad)上訪問的方式有一些區別嗎?我能夠訪問前者的文件,但不能訪問後者。模擬器和設備之間訪問資源的差異?

NSString *filePath = [NSString stringWithFormat:@"%@%@",[[NSBundle mainBundle] bundlePath], @"/AppResources/html/pages/quickHelp.html"]; 
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; 
// fileExists == YES in the debugger on both the simulator and the device 

NSString *path = [NSString stringWithFormat:@"AppResources/html/pages/%@", contentsFileName]; 
NSString *pathForURL = [[NSBundle mainBundle] pathForResource:path ofType:@"html"]; 
NSURL *url = [NSURL fileURLWithPath:pathForURL isDirectory:NO]; 

的代碼在模擬器上述工作正常,但在裝置pathForResource:路徑返回nil,所以最後一行拋出一個「零字符串參數」異常。

我失去了一些東西明顯?

編輯:當然,在上面的@「quickHelp」正在通過contentsFileName var。

edit2如果它有什麼不同,在我的構建設置中,「Base SDK」設置爲「iPhone Device 4.0」,「iPhone OS Deployment Target」設置爲「iPhone OS 3.1.3」。任何其他可能有影響的設置?

回答

1

[忽略]
我看到了 '/' 在你的*文件路徑,但不存在對*路徑(AppResources前)
[/忽略]

[編輯]
[[一個NSBundle mainBundle] pathForResource:@ 「快捷幫助」 ofType:@ 「html」 的inDirectory:@ 「AppResources/HTML /頁」]]

+0

pathForRes補充說,不是嗎?它在模擬器中,至少... 我不得不將它添加到* filePath中,以便我可以手動創建整個路徑。 – Tony 2010-06-07 17:52:36

+0

因爲你正在尋找一個名爲quickHelp.html的文件,你不應該只是把... pathForResource:@「quickHelp」ofType:@「html」]? (因爲它會搜索你的應用程序路徑) – KevinDTimm 2010-06-07 18:06:36

+0

不,我不認爲它會遞歸搜索子目錄。無論如何,我的確嘗試過,硬編碼爲pathForResource:@「quickHelp」ofType:@「html」,但是會導致代碼在模擬器和設備中都失敗。 – Tony 2010-06-07 18:16:38

1

我相信iPhone上的文件系統是區分大小寫的。用實際的文件檢查你的案例。

+0

我敢肯定,如果這是一個案例問題,那麼fileExists不會返回YES,對吧? – Tony 2010-06-07 17:45:43

+0

謝謝傑夫,對我來說這是正確的。但是,你知道iPhone爲何區分大小寫嗎? – hungbm06 2012-01-19 04:11:47

+0

這是蘋果公司的設計決定。我懷疑這是因爲不區分大小寫的文件系統比較慢,或者因爲像日文文件名這樣的事情很難實現不區分大小寫。 – 2012-01-19 04:15:34

相關問題