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檔案中的內容轉換成字典