NSBundle 獲取檔案路徑

2021-06-17 20:46:35 字數 1418 閱讀 1308

之前在初始化乙個類的時候:testviewcontroller *viewcontroller=[[testviewcontroller alloc]initwithnibname:@"testviewcontroller" bundle:[nsbundle mainbundle]];不是很明白:[nsbundle mainbundle]的意思。後來查閱資料後知道了它的作用,如下:

bundle是乙個目錄,其中包含了程式會使用到的資源. 這些資源包含了如影象,聲音,編譯好的**,nib檔案(使用者也會把bundle稱為plug-in). 對應bundle,cocoa提供了類nsbundle.我們的程式是乙個bundle. 在finder中,乙個應用程式看上去和其他檔案沒有什麼區別. 但是實際上它是乙個包含了nib檔案,編譯**,以及其他資源的目錄. 我們把這個目錄叫做程式的main bundle。

通過使用下面的方法得到程式的main bundle

nsbundle *mybundle = [nsbundle mainbundle];

一旦我們有了nsbundle 物件,那麼就可以訪問其中的資源了

nsbundle束,是一種特定的檔案型別,其中的內容遵循特定的結構。

nsbundle的乙個主要作用是獲取resources資料夾中的資源

在程式設計中使用[nsdata datawithcontentoffile:@"foo"]的時候,總是無法讀取正確的檔案內容。而使用[nsdata datawithcontentoffile:[[nsbundle mainbundle] pathforresource:@」foo」 oftype:@」"]的時候就可以。

因為當使用相對路徑的時候,其實他相對的當前目錄並不是程式執行的目錄,而是「/」。只有使用[nsbundle mainbundle]來生成的路徑才是檔案真正的路徑。

在此記錄一下:在以後的開發中不直接使用任何相對路徑,而是使用經過計算以後的絕對路徑。

一.獲取

1.   nsstring *path = [[nsbuddle mainbuddle] pathforresource:@"resourcename" oftype@"resourcetype"];

uiimage *image = [[uiimage imagewithcontentsoffile:path];

2.   uiimage *image = [uiimage imagenamed:@"imagename"];

二.獲取plist檔案

nsarray *array =[[nsarrayalloc]initwithcontentsoffile:[[nsbundlemainbundle]pathforresource:@"name"oftype:@"plist"]];

nsdictionary *dict=[arrayobjectatindex:index];//將plist檔案中的內容轉換成字典

NSBundle 獲取檔案路徑為空

nsstring filepath nsbundle mainbundle pathforresource test.m2 oftype nil 執行後filepath是空的,但是已經把這個檔案加到xcode中了,上網查了下發現由於當時是直接拖進去的,沒有新增到資源檔案路徑,需要採用add file...

NSBundle方法獲取不到資源路徑

ios問題筆記 nsbundle mainbundle pathforresource oftype 方法獲取不到資源路徑 ios開發在一次使用資料庫檔案時 nsstring filepath nsbundlemainbundle pathforresource city oftype sqlite...

NSBundle路徑問題

先上圖 上面是乙個程式檔案的主要路徑圖,我們平時獲取預設路徑或者儲存檔案路徑的兩種方式 nsstring bundlepath nsbundle mainbundle resourcepath nsstring documentpath nssearchpathfordirectoriesindom...