從framework裡面讀資源檔案

2021-07-25 15:52:52 字數 1611 閱讀 2977

這是framework內部的資源,跟其他都沒有關係。但是framework不能單獨存在,必須要放在某個「主程式」中才能起作用。bundle引數如果不傳,那麼預設是mainbundle,這種情況路徑就不對了。這種情況下,可以用下面這個api來獲得bundle引數。

+ (nsbundle *)bundleforclass:(class)aclass

;

// 獲取bundle引數

nsbundle *bundle = [nsbundle bundleforclass:self

.class];

// 讀uistoryboard

uistoryboard *storyboard = [uistoryboard storyboardwithname:@「storyboardname」 bundle:bundle];

// 讀uiimage

uiimage *image = [uiimage imagenamed:@"icon_back_gray" inbundle:bundle compatiblewithtraitcollection:nil];

// 檔案路徑

nsstring* htmlpath = [bundle pathforresource:@"index" oftype:@"html"];

同樣也是利用bundle引數來讀取,class選擇framework中某個匯出的class就可以了。

// 獲取bundle引數,zafinanceframeworkmanager是framework中介面類

nsbundle *bundle = [nsbundle bundleforclass:[zafinanceframeworkmanager class]];

這個和在主程式中讀自己的一樣,不需要bundle引數,一定要傳的話,就傳nil或者[nsbundle mainbundle]

同樣也是利用bundle引數來讀取,class選擇目標framework中某個匯出的class就可以了。

在單體程式中,nsbundle這個引數不需要管,全部傳nil或者是預設的[nsbundle mainbundle]就可以了。

引入了framework之後,就需要nsbundle這個引數來區分資源所在的模組。確定nsbundle比較簡單的方法是用下面這個api,其中的class只要選擇資源所在的framework中的某個class就可以了。如果是swift,並且不是類型別,那麼就可以用「self.dynamictype」來取得型別。

+ (nsbundle *)bundleforclass:(class)aclass

;

蘋果的指導原則是mvc,在大多數情況是合適的,客戶端都比較小,幾個頁面跳轉一下,加幾個動畫就差不多了。

近來,隨著移動裝置效能的提公升,手機越來越像電腦了,手機客戶端也越來越重,慢慢地跟pc端客戶端一樣。

程式變大了,為了便於維護,就要想辦法劃分模組,pc端經歷過的事情很快就在手機端重演。

從ios8開始,蘋果提供了動態鏈結庫framework,這個就相當於pc端的dll。手機客戶端的元件化、平台化也像在pc端那麼方便了。

參照

紹棠 從framework裡面讀資源檔案

這是framework內部的資源,跟其他都沒有關係。但是framework不能單獨存在,必須要放在某個 主程式 中才能起作用。bundle引數如果不傳,那麼預設是mainbundle,這種情況路徑就不對了。這種情況下,可以用下面這個api來獲得bundle引數。nsbundle bundleforc...

framework 新增新資源

戈爾多.d.羅傑 framework service 裡面相加個吐司,獲取不到string 資源 鴨子船長 一.找不到資源 r cannot be resolved to a variable 二.神避 2.1.新增資源 如 字串 到framework base core res res對應型別檔案...

從java的classpath裡面取資源

class.getresourceasstream 和 classloader.getresourceasstream 都可以用於從 classpath 裡面進行資源讀取,classpath包含classpath中的路徑和classpath中的jar。兩個方法的區別是資源的定義不同,乙個主要用於相對...