2、iOS 開發之字典轉模型和 xib,iosxib

來源:互聯網
上載者:User

2、iOS 開發之字典轉模型和 xib,iosxib
一、字典轉模型(plist檔案)

模型的封裝方法:(放到代碼倉庫中)

1.在.h檔案中添加與plist檔案key值對應的屬性名稱

Array --- > NSArrayDictionary --- > NSDictionarystring ---> NSStringnumber ---> NSNumber

注意:屬性名稱和plist中key值一定要一致

2..h檔案檔案中屬性的strong weak copy assign的使用

1> strong : 用於一般的對象或自訂的物件類型2> weak : 用於UI控制項和delegate3> copy : 用於NSString block對象4> assign : 用於基礎資料型別 (Elementary Data Type)

3.在.h中添加可以傳入字典參數的構造方法

- (instancetype)initWithDict:(NSDictionary*)dict;+ (instancetype)xxxWithDict:(NSDictionary*)dict;

4.在.m檔案中實現對應的構造方法

// 在initWithDict:方法中用KVC一句代碼搞定所有屬性

5.instancetype和id的區別

1> 相同點:都可以作為方法的傳回值類型
2> 不同點:instancetype編譯器會檢測出真是類型,id可以用在參數類型上

二、KVC

KVC -索引值編碼,是一種間接修改/讀取對象屬性的一種方法
1.使用注意事項:

1> plist中的索引值名稱必須與模型中的屬性一致2> 模型中的屬性可以不完全出現在plist中,但是如果plist檔案中的屬性不完全出現在屬性中就會出錯。
三、xib的使用

xib檔案用來描述一塊局部的UI介面
在開發階段面向開發人員是xib檔案,裝到手機xib檔案就會轉化為nib檔案

1.xib檔案的載入方法
1> 方法1:建立所有的xib對象,並且將對象按順序放到objs數組中

NSArray * objs = [[NSBundle mainBundle] loadNibNamed:@"appView" owner:nil options:nil];

2> 方法2

UINib *nib = [UINib nibWithNibName:@"appView" bundle:[NSBundle mainBundle]];NSArray* objs = [nib instantiateWithOwner:nil options:nil];

2.xib封裝成view的過程

1> 建立一個整合字UIView的自訂view,假設類名叫做(WBAppView)2> 建立一個WBAppView.xib檔案來描述WBAppView內部結構3> 修改xib的類型為WBAppView的真實類型4> 將內部子控制項跟WBAppView進行屬性連線5> WBAppView提供一個模型屬性6> 重寫模型屬性的set方法,因為在set方法中可以拿到外界傳遞的模型資料7> 把模型資料拆開,分別設定資料到對應的子控制項中8> 補充:提供一個建立WBAppView的類方法,將讀取的xib檔案代碼屏蔽起來
四、懶載入
  • 懶載入:用到時才載入,在get方法中實現的,OC中的get方法是去掉底線的屬性名稱首字母小寫
    用到時:用到了真實資料or用到了get方法(文檔)
- (NSArray *)apps{    if (_apps == nil) {    // 1.獲得plist的全路徑    NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];    // 2.載入數組    NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];    // 3.將dictArray裡面的所有字典轉成模型對象,放到新的數組中    NSMutableArray *appArray = [NSMutableArray array];    for (NSDictionary *dict in dictArray) {    // 3.1.建立模型對象    MJApp *app = [MJApp appWithDict:dict];    // 3.2.添加模型對象到數組中    [appArray addObject:app];    }    // 4.賦值    _apps = appArray;    }    return _apps;}

補充:不能與控制項進行互動

1> alpha <= 0.012> hidden = YES3> userInteraction = NO(父控制項的userInteraction = NO)4> 位置超過了所在父控制項的尺寸// 父視圖不能互動,子視圖也不能互動方法的命名規範:

命名法則:

1> 單詞首字母小寫,後面的單詞的首字母大寫2> initWithxxx: init 初始化函數With單詞必須大寫,因為OC預設的就是"駝峰法",預設初始化函數就是init單詞開頭的,如果是initwithxxx就是認為是initwith單詞開頭的,造成找不到初始化方法3> 方法,屬性不能以new作為名稱的開頭

“`

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.