標籤:
KVC索引值對是後期在開發項目的時候會經常用到的,如果搞不清楚那個是key,那個是Value,那麼就會很吃虧的,我個人是在這方面吃了很多的虧,特別是在做通訊錄的時候. 也許剛開始接觸的不過是簡單的字典,或者是簡單的數組,但等到後期遇到字典裡包含數組,數組中還有數組,然後在套字典等等,那就SB了.
KVC:全拼是(Key-Value-Coding),索引值編碼. 是一種間接訪問執行個體變數的方法. key:鍵,用於標識執行個體變數. Value:值,是執行個體變數對應的值.下面介紹一下KVC使用的一些方法:
第一:修改值的方法
1.setValue:forKey:
2.setValue:forKeyPath:
3.setValue:forUndefinedKey:
4.setValuesForKeysWithDicitonary:
第二:擷取值
1.valueForKey:
2.valueForKeyPath:
3.valueForUndefinedKey:
我們今天只說經常會使用的兩個方法:
1.setValue:forKey:
首先要在Student.h類中定義好兩個屬性
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *sex;
在main函數中使用KVC
Student *stu = [[Student alloc]init]; 建立一個學生對象
[stu setValue:@"dandan" forKey:@"name"];使用KVC進行賦值
這裡的Value是你要設定的值,這個值是name的值,我把改成"dandan", 值有了,那麼要把這個值找個對應的屬性變數,forKey就是你在Student.h中定義的name. 這個key要與你屬性定義的一樣.
2.setValue: forUndefinedKey:
[stu setValue:@"120" forUndefinedKey:@"weight"];
首先需要強調的,我們在Student.h中沒有定義weight的屬性,所以是找不到的,按常理說你找不到的Key,編譯器應該是報錯的,但是使用了這個方法不會報錯,而且還會提示我們:沒有對應的執行個體變數,這個方法在後期做項目的時候會經常使用.記住!!!!!
3.setValuesForKeysWithDictionary:
現在有一個需求就是通過字典給對象賦值,那麼我們就得用上面的方法.首先我們要建立一個字典對象.
NSDictionary *dataDic = [[NSDictionary alloc]initWithObjectsAndKeys:@"Jack",@"name",@"male",@"sex",nil];
[stu setValuesForKeysWithDictionary:dataDic];
這樣我們就通過字典給stu對象賦值了.可能不能一下子理解,那麼就自己在工程多練習練習
Objective-C KVC索引值對