1. 程式人生 > >NSBundle 獲取資源路徑

NSBundle 獲取資源路徑

 之前在初始化一個類的時候: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];

一般我們通過這種方法來得到bundle.如果你需要其他目錄的資源,可以指定路徑來取得bundle
NSBundle *goodBundle;
goodBundle = [NSBundle bundleWithPath:@"~/.myApp/Good.bundle"];

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

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

NSBundle的一個主要作用是 獲取Resources資料夾中的資源

        在程式設計中使用[NSData dataWithContentOfFile:@"foo"]的時候,總是無法讀取正確的檔案內容。而使用[NSData dataWithContentOfFile:[[NSBundle mainBundle] pathForResource:@”foo” ofType:@”"]的時候就可以。

因為當使用相對路徑的時候,其實他相對的當前目錄並不是程式執行的目錄,而是“/”。只有使用[NSBundle mainBundle]來生成的路徑才是檔案真正的路徑。 在此記錄一下:在以後的開發中不直接使用任何相對路徑,而是使用經過計算以後的絕對路徑

一.獲取圖片

  1.   NSString *path = [[NSBuddle mainBuddle] pathForResource:@"resourceName" [email protected]"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檔案中的內容轉換成字典