Model的合理使用時機

2021-07-09 04:27:52 字數 4377 閱讀 3476

model:

我個人理解是,是通過乙個設定的的全域性變數來獲取對應儲存在陣列裡的資料。

例如:建立模型裝換

.h#import

@inte***ce

tymodel :

nsobject //

在此處設定我們要裝換模型的全域性變數

@property

(nonatomic

, copy

) nsstring

*data;

@property

(nonatomic

, copy

) nsstring

*name;

+ (instancetype

)addmodeldic:(

nsdictionary

*)dic;

@end .m

#import

"tymodel.h" //

這是使用的是

kvc來做為裝換

@implementation

tymodel

+ (instancetype

)addmodeldic:(

nsdictionary

*)dic

- (instancetype

)initwithdict:(

nsdictionary

*)dic

return

self;

} @end

將我們從介面那裡獲取過來的資料進行轉換,在這裡我就字典裡的資料插入到陣列中模擬介面資料

#import

"viewcontroller.h"

#import

"tymodel.h"

@inte***ce

viewcontroller()

@property

(nonatomic

, strong

) nsmutablearray

*modelmutablearray;

@end

@implementation

viewcontroller //

可變陣列懶載入

- (nsmutablearray

*)modelmutablearray

return

_modelmutablearray;

} - (

void

)viewdidload ;

nsdictionary

* dic1 = @;

nsarray

*array = [

nsarray

arraywithobjects

:dic,dic1,

nil]; //

遍歷陣列取出字典放入模型中進行轉換,裝換成功後放入陣列中儲存起來

for(nsdictionary

*modeldic

inarray) //

提取我們轉換出來的模型

tymodel

*mo =

_modelmutablearray[0

]; nslog(@"

模型是否成功

:%@"

,mo.

name);

} - (

void

)didreceivememorywarning

@end

列印的結果:

2015-12-2614:49:32.535 model[1151:33138] 模型是否成功:小花

看起來是不是簡單、好用,高效率呢!的確如果我們的介面如傳入過來的資料中有多個陣列,陣列裡的字典欄位也非常多。我們使用這種模型是非常好用的,且也不會出現什麼錯誤。然而當我們在某個頁面中使用的字段不是很多,就乙個陣列,這時我們有必要在這裡建立乙個模型嗎?

例如:#import

"viewcontroller.h"

#import

"tymodel.h"

#define height[uiscreen mainscreen].bounds.size.height

#define width[uiscreen mainscreen].bounds.size.width

@inte***ce

viewcontroller

()<

uitableviewdatasource

, uitableviewdelegate

>

@property

(nonatomic

, strong

) nsmutablearray

*modelmutablearray;

@property

(nonatomic

, strong

) nsdictionary

*datadic;

@property

(nonatomic

, strong

) nsarray

*dicarray;

@end

@implementation

viewcontroller //

可變陣列懶載入

- (nsmutablearray

*)modelmutablearray

return

_modelmutablearray;

} - (

void

)viewdidload ;

//    nsdictionary * dic1 =@;

//    nsarray *array = [nsarrayarraywithobjects:dic,dic1,nil]; //

遍歷陣列取出字典放入模型中進行轉換,裝換成功後放入陣列中儲存起來

//    for (nsdictionary *modeldic inarray) //

提取我們轉換出來的模型

//    tymodel *mo = _modelmutablearray[0];

nsdictionary

* dic = @;

nsarray

*array = [

nsarray

arraywithobjects

:dic,

nil];

_datadic

= array[0];

nslog(@"

模型是否成功

:%@"

,_datadic

[@"name"

]);

_dicarray

= [nsarray

arraywithobjects

:_datadic

[@"data"

],_datadic

[@"name"

],_datadic

[@"position"

],_datadic

[@"level"

],_datadic

[@"age"

],nil];

[self

addtableview];

} - (

void

)addtableview

- (nsinteger

)numberofsectionsintableview:(

uitableview

*)tableview

- (nsinteger

)tableview:(

uitableview

*)tableview numberofrowsinsection:(

nsinteger

)section

return0;

} - (uitableviewcell

*)tableview:(

uitableview

*)tableview cellforrowatindexpath:(

nsindexpath

*)indexpath

cell.

textlabel

.text

= _dicarray

[[indexpath

row]];

return

cell; }

- (void

)didreceivememorywarning

@end

在這裡是不可能進行轉模型的,因為要達到我們的設計效果我們後台給出的資料達不到轉模型的條件。如果非要轉模型,那就比較複雜了得不償失。

Block 的使用時機

block 一般是用來表示 簡化一小段的程式碼,它特別適合用來建立一些同步執行的程式片段 封裝一些小型的工作或是用來做為某乙個工作完成時的回傳呼叫 callback 在新的ios api中block被大量用來取代傳統的delegate和callback,而新的api會大量使用block主要是基於以下...

拷貝建構函式的使用時機

拷貝建構函式使用的時機有 1 類的賦值 2 類做為函式的形參而不使用引用時 3 類做為函式的返回值 includeusing namespace std class myclass06a private int x 10 int y 20 void main06 class myclass publ...

T 與List的使用時機

所有的陣列型別都隱式地從system.array這個抽象類派生,而system.array又派生自system.object。也就是說陣列是引用型別。通過如下方式建立陣列 int arrint new int 10 以上,在託管堆上分配了可以容納10個未裝箱int物件所需要的記憶體塊 這個記憶體塊除...