iOS KVC和一些基礎知識了解

2021-07-10 06:58:42 字數 2362 閱讀 9608

字典和模型都用來儲存資料 .

字典: 通過字串型別的key取值.(一般情況下,設定資料和取出資料都使用"字串型別的key",編寫這些key時,編譯器不會有任何友善提示,需要手動敲寫.手動敲寫字串key,key容易寫錯,且如果寫錯,編譯器不會有任何警告和報錯,容易造成設錯資料或者取錯資料)

模型類 ,即用來存放資料的類, 繼承自nsobject. 

所謂模型,其實就是資料模型, 專門用來存放資料的物件,用它來表示會更加專業.

模型設定資料和取出資料都是通過它的屬性, 屬性名如果寫錯,編譯器會馬上報錯,因此保證了資料的正確性.

使用模型訪問屬性時, 編譯器會提供一系列的提示,提高編碼效率.

字典轉模型應該提供乙個可以傳入字典引數的構造方法. 一般提供如下兩個方法(乙個物件方法和乙個類方法) , 為了與蘋果公司原**保持一致性,方法名稱盡量模仿蘋果公司規範來書寫.

-(instancetype)initwithdict:(nsdictionary *)dict;

+(instancetype)***withdict:(nsdictionary *)dict;

instancetype:在型別表示上,跟id一樣,可以表示任何資料型別;

instancetype只能用在返回值型別上,不能像id一樣用在引數型別上;

instancetype比id多乙個好處:編譯器會檢測instancetype的真實型別.

根據資料字典的鍵值對,建立對應的資料模型. 在.h檔案中宣告模型屬性及方法 .如下

#import

/** * 名稱 */

@property (nonatomic, copy) nsstring *name;/

** * 圖示 */

@property (nonatomic, copy) nsstring *icon;

/** * 標題 */

@property (nonatomic, weak) nsstring *title;

/** * 答案 */

@property (nonatomic, copy) nsstring *answer;

/** * 通過字典來初始化模型物件 * * @param dict 字典物件 * * @return 已經初始化完畢的模型物件 */

- (instancetype)initwithdict:(nsdictionary *)dict;

注意:@property是乙個屬性訪問申明,括號內支援以下屬性:

1> getter = gettername;setter = settername,設定setter與getter的方法名.

2> readwrite:同時生成get方法和set方法的宣告和實現;

3> readonly:只生成get方法的宣告是實現;

· readwrite與readonly,都是設定訪問級別.

4> assign: set方法的實現是直接賦值,不進行任何retain操作,為了解決原型別與迴圈引用問題,一般用於基本資料型別;

5> retain:set方法的實現的release舊值,retain新值,用於oc物件型別;

6> copy: set方法的實現是release舊值,copy新值,用於nsstring block等型別;

7> nonatomic:非原子性訪問,不加同步,多執行緒併發訪問會提高效能.如果不加此屬性,則預設兩個訪問方法都為原子型事物訪問.鎖被加到所屬物件例項級.set方法的實現不加鎖(比atpmic效能高).

8> strong: 用於一般物件

9> weak: 用於ui控制項, 如uibutton , uilable等

字典轉模型實現方法如下:

- (instancetype)initwithdict:(nsdictionary *)dict 

return self;

}return [[self alloc] initwithdict:dict];}

@end

或者用kvc方法來實現

- (instancetype)initwithdict:(nsdictionary *)dict 

return self; }

@end

但是kvc的使用是有條件的 ; 由於kvc會將字典所有的鍵值對(key-value)賦值給模型對應的屬性.只有當字典的鍵值對個數跟模型的屬性個數相等,並且屬性名必須和字典的鍵值對一樣時才可以使用kvc.

/** * 字典轉模型,模型再次存入陣列中 重寫陣列的set方法 */

-(nsarray *)questions

// 賦值 

_questions = questionarray;  }

return _questions; }

一些基礎知識

關於cd cd 返回剛才的位置 關於ls ls l,簡寫ll ls a顯示的檔案以.開頭,隱藏檔案 la al 關於cp cp r tmp dir 拷目錄 tmp拷到dir 需要加 r的 cp rm 10 13 1.grep 在乙個字元集合中找到符合條件的行輸出 如 grep hello file ...

一些基礎知識

linux基礎知識考查 1 在linux 系統中,以 檔案 方式訪問裝置 2 前台起動的程序使用 ctrl c 終止。3 在使用ls 命令時,用八進位制形式顯示非列印字元應使用引數 b 4 在linux 系統中,用來存放系統所需要的配置檔案和子目錄的目錄是 etc 5 在linux 系統中,壓縮檔案...

一些基礎知識(一)

1 類成員的組成 函式成員和資料成員 資料成員 字段,常量,事件成員 public int a 0 字段成員 public const int b 90 常量public event customeventhandler raisecustomevent 事件成員 函式成員 方法,屬性,建構函式,終...