KeyValueCoding 鍵值編碼

2021-06-29 08:53:30 字數 1590 閱讀 3052

-(void)btnclick:(uibutton *)btn{

if (btn.tag == 100) {

//修改

teacher

的變數

else{

//修改

student

的變數

[_sm

setvalue:@"xiaoxin"

forkey:@"name"];

//給成員變數賦值

-(void)setvalues{

_sm = [[studentmodel

alloc]init];

_tm = [[teachermodel

alloc]init];

//1.

通過點語法給物件的變數賦值

_sm.name = @"xiaoming";

//通過點語法獲取物件的變數的值

nslog(@"student name = %@",_sm.name);

//2.

使用kvc

的方式給物件的變數賦值

//kvc:

鍵值編碼。是一種可以通過字串

(key)

直接訪問物件的變數的機制。

[_sm

setvalue:@"xiaobai"

forkey:@"name"];

//使用

kvc方式獲取物件的變數的值

nslog(@"_sm.name = %@",[_sm

valueforkey:@"name"]);

//kvo:

鍵值觀察。當被觀察的物件的屬性發生改變時,會通知觀察者。 //

要觀察哪個物件,哪個物件新增觀察者。 /*

第乙個引數:觀察者

--> self

第二個引數:要觀察的物件的屬性

第三個引數:要觀察的物件的屬性的幾種變化方式

--> 

新舊值觀察

第四個引數:

nil */

[_sm

addobserver:self

forkeypath:@"name"

options:nskeyvalueobservingoptionnew | nskeyvalueobservingoptionold

context:nil];

//當被觀察的物件的屬性發生改變時,會通知觀察者。呼叫該方法。 /*

第乙個引數:被觀察的物件的屬性

第二個引數:被觀察的物件

第三個引數:屬性的改變

--> 

屬性的新舊值 */

-(void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary *)change context:(void *)context{

if ([object iskindofclass:[studentmodel

class]]) {

nslog(@"old:%@",[change objectforkey:@"old"]);

nslog(@"new:%@",[change objectforkey:@"new"]);

外來鍵 超鍵 候選鍵

外來鍵 指向另一張表的主鍵 foreign key 外來鍵字段 references 表 主鍵 子表 外來鍵所在 外來鍵不能指向不匹配的父表主鍵 父表主鍵不能隨意更改,預設為嚴格模式,不能刪除或更新記錄,級聯模式,父表更新記錄子表也更新,置空模式,父表更新記錄子表關聯資料置空 外來鍵的兩端必須型別相...

超鍵 候選鍵 主鍵 外來鍵

超鍵 super key 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵 候選鍵 candidate key 不含有多餘屬性的超鍵稱為候選鍵 主鍵 primary key 關係模式中使用者正在使用的候選鍵稱主鍵,主鍵是人為規定的 外來鍵 foreign key 如果關係模式r1中的某屬性集不是r1...

超鍵 候選鍵 主鍵 外來鍵

超鍵 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。乙個屬性可以為作為乙個超鍵,多個屬性組合在一起也可以作為乙個超鍵。超鍵包含候選鍵和主鍵。候選鍵 是最小超鍵,即沒有冗餘元素的超鍵。主鍵 資料庫表中對儲存資料物件予以唯一和完整標識的資料列或屬性的組合。乙個資料列只能有乙個主鍵,且主鍵的取值不能缺...