NSBundle的使用方法

2021-06-25 08:51:58 字數 3674 閱讀 9983

bundle是乙個目錄,其中包含了程式會使用到的資源. 這些資源包含了如影象,聲音,編譯好的**,nib檔案(使用者也會把bundle稱為plug-in). 對應bundle,cocoa提供了類nsbundle.

我們的程式是乙個bundle. 在finder中,乙個應用程式看上去和其他檔案沒有什麼區別. 但是實際上它是乙個包含了nib檔案,編譯**,以及其他資源的目錄. 我們把這個目錄叫做程式的main bundle

bundle中的有些資源可以本地化.例如,對於foo.nib,我們可以有兩個版本: 乙個針對英語使用者,乙個針對法語使用者. 在bundle中就會有兩個子目錄:english.lproj和french.lproj,我們把各自版本的foo.nib檔案放到其中. 當程式需要載入foo.nib檔案時,bundle會自動根據所設定的語言來載入. 我們會在16章再詳細討論本地化

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

nsbundle *mybundle = [nsbundle mainbundle];

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

// extension is optional

nsstring *path = [goodbundle pathforimageresource:@"mom"];

nsimage *momphoto = [[nsimage alloc] initwithcontentsoffile:path];

bundle中可以包含乙個庫. 如果我們從庫得到乙個class, bundle會連線庫,並查詢該類:

class newclass = [goodbundle classnamed:@"rover"];

id newinstance = [[newclass alloc] init];

如果不知到class名,也可以通過查詢主要類來取得

class aclass = [goodbundle principalclass];

id aninstance = [[aclass alloc] init];

可以看到, nsbundle有很多的用途.在這當中, nsbundle負責(在後台)載入nib檔案. 我們也可以不通過nswindowcontroller來載入nib檔案, 直接使用nsbundle:

bool successful = [nsbundle loadnibnamed:@"about" owner:someobject];

注意噢, 我們指定了乙個物件someobject作為nib的file's owner

使用initwithcontentsoffile時,檔案路徑的寫法 使用initwithcontentsoffile方法可以通過讀取乙個檔案的內容來初始化物件。 但檔案的路徑應該怎麼確定呢? 可以使用nsbundle的物件來獲取。 例如當前程式所在目錄下有個檔案re.xml,我們要將該檔案的內容做為nsdata的資料來源來初始化乙個nsdata物件,可以用下面的方法來實現:

nsstring*filepath = [[nsbundlemainbundle] pathforresouse:@"re"oftype:@"xml"];nsdata*data = [[nsdataalloc] initwithcontentsoffile:filepath];

讀取plist中的內容:

nsstring*datapath = [[nsbundlemainbundle] pathforresource:@"data"oftype:@"plist"];self.data = [nsarrayarraywithcontentsoffile:datapath];

刪除本地檔案

IPhone之NSBundle的使用

nsbundle的物件可以獲取應用程式安裝目錄的附件。獲取xml檔案 nsstring filepath nsbundle mainbundle pathforresouse re oftype xml nsdata data nsdata alloc initwithcontentsoffile ...

pythonpip使用方法 pip使用方法整理

匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...

機械秒錶的使用方法 秒錶的使用方法!

秒錶是一種常用的測時儀器。又可稱 機械停表 由暫停按鈕 發條柄頭 分針等組成。它是利用擺的等時性控制指標轉動而計時的。它是利用擺的等時性控制指標轉動而計時的。在它的正面是乙個大表盤,上方有乙個小表盤 圖1.4 2 秒針沿大表盤轉動,分針沿小表盤轉動。分針和秒針所指的時間和就是所測的時間間隔。在表正上...