詳解iPhone Simulator文件路徑
詳解iPhone Simulator文件路徑是本文要介紹的內容,iphone/ipod touch app 的開發使用了沙盒,即程序員能訪問的一些文件要在自己程序的沙盒之內,一個應用程序的目錄除了編譯后的程序文件,通常還會有自己的document,tmp目錄,可以通過調用api來獲取這些路徑,然后保存文件。
當使用xcode編譯執行時,通常會啟動一個iphone simulator來執行app,但是有個問題是,每次用simulator啟動時,生成的app程序的根目錄都是不同的。
這也意味著,如果你有一份存好數據的文件,要放到document或者tmp目錄下,然后在應用程序里通過調用GetDocumentDirectory類似的api來讀時,得到的都是不同的路徑(如果不修改代碼,不重新編譯則不會),也就是說,你需要每次測試運行時,都要把你保存好的數據文件拷到本次程序運行目錄的document下,這樣調試起來非常麻煩。如何解決這個問題?
其實也很簡單。。。用google大法就好了。沙盒技術是在跑真正的iphone/ipod touch上時的限制,當跑simulator時,其實可以從其它路徑讀取文件。
也就是說,你可以把文件放到一個你指定的其它地方,不需要放到app下的document下,這樣當跑simulator時,app也可以讀到非自己沙盒的目錄下的文件。而當真正發布一個app時,也就是在iphone/ipod touch上運行時,則每次app的運行的根目錄是固定的(不象跑simulator時會動態改變),這時再把數據文件放到真正的沙盒document或者tmp目錄下就可以了。
為了綜合這上面這兩種情況,當以simulator的方式來跑的時候,會有一個
- TARGET_IPHONE_SIMULATOR
的宏,所以我們可以在獲取文件時這么寫:
- - (NSString *) dataFilePath {
- #if TARGET_IPHONE_SIMULATOR
- return @"/Users/fengbo/project/test/yourFileName";
- #else
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory
- , NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- return [documentsDirectory stringByAppendingPathComponent:@"yourFileName"];
- #endif
- }
這樣就可以滿足上面兩種情況了。
小結:詳解iPhone Simulator文件路徑的內容介紹完了,希望本文對你有所幫助!