詳解iPhone Simulator文件路徑
詳解iPhone Simulator文件路徑是本文要介紹的內(nèi)容,iphone/ipod touch app 的開(kāi)發(fā)使用了沙盒,即程序員能訪問(wèn)的一些文件要在自己程序的沙盒之內(nèi),一個(gè)應(yīng)用程序的目錄除了編譯后的程序文件,通常還會(huì)有自己的document,tmp目錄,可以通過(guò)調(diào)用api來(lái)獲取這些路徑,然后保存文件。
當(dāng)使用xcode編譯執(zhí)行時(shí),通常會(huì)啟動(dòng)一個(gè)iphone simulator來(lái)執(zhí)行app,但是有個(gè)問(wèn)題是,每次用simulator啟動(dòng)時(shí),生成的app程序的根目錄都是不同的。
這也意味著,如果你有一份存好數(shù)據(jù)的文件,要放到document或者tmp目錄下,然后在應(yīng)用程序里通過(guò)調(diào)用GetDocumentDirectory類(lèi)似的api來(lái)讀時(shí),得到的都是不同的路徑(如果不修改代碼,不重新編譯則不會(huì)),也就是說(shuō),你需要每次測(cè)試運(yùn)行時(shí),都要把你保存好的數(shù)據(jù)文件拷到本次程序運(yùn)行目錄的document下,這樣調(diào)試起來(lái)非常麻煩。如何解決這個(gè)問(wèn)題?
其實(shí)也很簡(jiǎn)單。。。用google大法就好了。沙盒技術(shù)是在跑真正的iphone/ipod touch上時(shí)的限制,當(dāng)跑simulator時(shí),其實(shí)可以從其它路徑讀取文件。
也就是說(shuō),你可以把文件放到一個(gè)你指定的其它地方,不需要放到app下的document下,這樣當(dāng)跑simulator時(shí),app也可以讀到非自己沙盒的目錄下的文件。而當(dāng)真正發(fā)布一個(gè)app時(shí),也就是在iphone/ipod touch上運(yùn)行時(shí),則每次app的運(yùn)行的根目錄是固定的(不象跑simulator時(shí)會(huì)動(dòng)態(tài)改變),這時(shí)再把數(shù)據(jù)文件放到真正的沙盒document或者tmp目錄下就可以了。
為了綜合這上面這兩種情況,當(dāng)以simulator的方式來(lái)跑的時(shí)候,會(huì)有一個(gè)
- TARGET_IPHONE_SIMULATOR
的宏,所以我們可以在獲取文件時(shí)這么寫(xiě):
- - (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
- }
這樣就可以滿足上面兩種情況了。
小結(jié):詳解iPhone Simulator文件路徑的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!