字典和模型都用來儲存資料 .
字典: 通過字串型別的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 事件成員 函式成員 方法,屬性,建構函式,終...