ios Mantle使用小記

2021-07-09 02:07:38 字數 2785 閱讀 6149

1. 測試時, 可以使用下面這個**及**來測試, 裡面有模型,陣列,以及字典, 還可以有long long 轉nsdate,  string 轉 int等。

nsurl

*url = [

nsurl

urlwithstring

:@""];

[nsurlconnection

sendasynchronousrequest

:[nsurlrequest

requestwithurl

:url]

queue

:[nsoperationqueue

mainqueue]

completionhandler

:^(nsurlresponse

* response,

nsdata

* data, 

nserror

* connectionerror)

else }

}];2. 使用時,需要把該模型有哪些屬性值寫清楚, 轉的時候mantle才知道哪些是需要轉的。型別建議使用nsstring, nsnumber, nsarray, nsdictionary, 等,不建議使用基本型別。

@inte***ce

firstinte***cemodel :

mtlmodel

<

mtljsonserializing

>

@property

(nonatomic

,strong

) nsdate

*date;

@property

(nonatomic

,strong

) nsnumber

*humidity;

@property

(nonatomic

,strong

) nsnumber

*temperature;

@property

(nonatomic

,strong

) nsstring

*cod;

@property

(nonatomic

,strong

) nsstring

*name;

@property

(nonatomic

,strong

) nsstring

****teststr;

@property

(nonatomic

,strong

) nsarray

*arrweathers;

@property

(nonatomic

,strong

) sysmodel

*sys;

@end

3. 實現

+ (nsdictionary

*)jsonkeypathsbypropertykey

上面這個方法, 可以把伺服器返回的字段與當前的屬性名比較,如果相同,則直接使用,如果不相同的, 則與mutdic中的value進行比較, 然後轉換成對應key的屬性值。

4. 如果上面的伺服器返回的cod為整弄,205這樣的資料, 但我們這裡定義的屬性值為nsstring, 則就需要下面這樣的方式來進行轉換,注意下面這個方法是雙向轉換。

+ (nsvaluetransformer

*)codjsontransformer  

reverseblock

:^id(id

value,

bool

*success, 

nserror

*__autoreleasing

*error) ]; }

再附乙個伺服器返回的dt為乙個long long整型,這裡需要乙個nsdate.

+ (nsvaluetransformer

*)datejsontransformer  

reverseblock

:^id(id

value,

bool

*success, 

nserror

*__autoreleasing

*error) ]; }

5. 附乙個model內嵌model的實現, 注意和上面最初的型別一樣,是乙個sysmodel.class.

+ (nsvaluetransformer

*)sysjsontransformer ]; }

然後就會得到乙個內嵌的sysmodel物件。

6. 再加上乙個陣列的物件。伺服器返回的weather是乙個陣列, 然後陣列中的物件是weathermodel.

+ (nsvaluetransformer

*)arrweathersjsontransformer

7. 再來乙個安全方法。如果我們要求其中的cod不能為空,我們就可以實現下面這個方法,來對當其中有資料為空時,進行乙個容錯處理。下面這個方法,當伺服器有返回資料為null的鍵值時,而本地又對這個鍵做了屬性匹配時,就會呼叫下面這個方法,一般情況下可能會崩潰, 所以建議如果有一些重要的不能為null的鍵,可以在這裡進行處理。

- (void

)setnilvalueforkey:(

nsstring

*)key

else }

注意這個方法僅對非指標型別有用,即int float, bool等, 其它型別要想容錯[nsnull null], 需要在

mtlvaluetransformer

transformerusingforwardblock

中進行識別處理。

oracle rownum使用小記

對於 oracle 的 rownum 問題,很多資料都說不支援 between.and,只能用以上符號 並非說用 gt between.and 時會提示sql語法錯誤,而是經常是查不出一條記錄來,還會出現似乎是莫名其妙的結果來,其實您只要理解好了這個 rownum 偽列的意義就不應該感到驚奇,同樣是...

libtiff使用小記

這兩天就跟libtiff庫卯上了,總會遇到奇怪的問題。現在問題或直接或曲折的解決了,一一記錄下來。問題一 tiffsetdirectory函式的使用。目的 交叉讀取tiff中兩頁的每一行,假設第一頁tif為tif 0,第二頁tif為tif 1。我的目的就是先讀tif 0的第i行,然後讀tif 1的第...

mysql使用小記

最近專案開發採用mysql作資料庫,邏輯全部封裝到儲存過程,c otl訪問。1 otl對mysql的支援並不咋的,不能訪問帶out型別的儲存過程。解決方案是將out引數放在結果集中返回 後果是每條結果都包含這個變數.2 otl不能返回不同的結果集,只能選擇拆分儲存過程。3 update不能用row ...