KVC change all Private

  • 基本知識(shí)就不再介紹

  • 一.說一下: KVC可以隨意修改一個(gè)對(duì)象的屬性或者成員變量(并且私有的也可以修改)

    @property(nonatomic,copy) NSString *name;

它有三種表達(dá)方式(結(jié)果都一樣)

Person *person = [[Person alloc]init];
1.person.name = @"小紅";
2.[person setValue:@"小紅" forKey:@"name"];
3.[person setValue:@"小紅" forKey:@"_name"];
4.[person setValue:@"小紅" forKeyPath:@"_name"];
  • 二.下面私有的定義變量又該如何

    {
       @private
       double _hight;//私有的變量,只有
    }
    

設(shè)置值的方式應(yīng)該是
[person setValue:@12.3 forKey:@"_hight"];

而為什么不帶下劃線也一樣呢
[person setValue:@12.3 forKey:@"hight"];

原因:系統(tǒng)會(huì)查找hight相同的屬性时甚,如果找不到就會(huì)查找?guī)聞澗€的_hight

  • 三.具體的說一下 forKey與forKeyPath的區(qū)別(通過給狗起名字來看看)建議以后都是用forKeyPath

  • 聲明兩個(gè)類:Person和Dog類

在Person里面聲明兩個(gè)屬性
 
   @property(nonatomic,copy) NSString *name;
   @property(nonatomic,strong) Dog *dog;

在Dog里面聲明一個(gè)屬性

   @property(nonatomic,copy) NSString *name;


    //四者沒什么區(qū)別(取值直接用 [person valueForKeyPath:@" "])
    //1.person.dog.name = @"汪汪";
    //2.[person.dog setValue:@"汪汪" forKey:@"name"];
    //3.[person.dog setValue:@"汪汪" forKeyPath:@"name"];
    //4.[person setValue:@"汪汪" forKeyPath:@"dog.name"];
  
    但是第4種如果這種寫就有區(qū)別了(forKey只尋找娶牌,person里面的屬性丸边,這里給dog設(shè)置名字是錯(cuò)誤的,path是路徑彻舰,需要一層一層的尋找)
    [person setValue:@"汪汪" forKey:@"dog.name"];//錯(cuò)誤的寫法
  • forKeyPath 包含了forKey的功能棋凳,以后使用keyPath就可以了
    forKeyPath中可以利用.運(yùn)算符,就可以一層一層往下查找對(duì)象的屬性(再深也不怕鸿摇,一級(jí)一級(jí)往下用點(diǎn)屬性找)
  • 區(qū)別總結(jié):forKey只尋找person里面的屬性,這里給dog設(shè)置名字是錯(cuò)誤的劈猿,path是路徑拙吉,需要一層一層的尋找

  • 四.Cocoa的大招是kvc(下面說一下關(guān)于數(shù)組的用法,kvc很強(qiáng)大)

    在人的屬性里面設(shè)置一個(gè)屬性
    @property(nonatomic,strong) NSArray *books;
    再寫一個(gè)Book類(聲明兩個(gè)屬性糙臼,再進(jìn)行一些屬性設(shè)置)

    @property(nonatomic,copy)NSString *name;
    @property(nonatomic,assign)double price;
    
    
      Person *person = [[Person alloc]init];
      
      Book *book1 = [[Book alloc]init];
      book1.name = @"迷茫";
      book1.price = 21.5;
      
      Book *book2 = [[Book alloc]init];
      book2.name = @"奮斗";
      book2.price = 20.5;
    
      Book *book3 = [[Book alloc]init];
      book3.name = @"努力";
      book3.price = 24.5;
      
      Book *book4 = [[Book alloc]init];
      book4.name = @"成功";
      book4.price = 28.5;
      
      person.books = @[book1,book2,book3];
      
      //需求把所有的書名放到一個(gè)數(shù)組里面
      //1.for循環(huán)放值
      
      NSMutableArray *array = [[NSMutableArray alloc]init];
    
     for (Book *book in person.books) {
          
          [array addObject:book];
      }
     
    NSLog(@"%@",array);
      
      //用kvc搞定
      
      //@"books.name" 取出數(shù)組元素的每一個(gè)元素的name屬性的值庐镐,放到一個(gè)新的數(shù)組里面進(jìn)行返回
      
     // NSArray *name = [person valueForKeyPath:@"books.name"];
      NSArray *price = [person valueForKeyPath:@"books.price"];
      //書本加起來一共多少錢?变逃?必逆?、
      //1.種for循環(huán),定義數(shù)組名眉,去數(shù)組元素
      
      double sum = 0;
     
      for (Book *book in person.books) {
         
          sum += book.price;
     }
    
      double sum = [[person valueForKeyPath:@"books.@sum.price"]doubleValue];
      
      NSLog(@"%f",sum);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粟矿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子损拢,更是在濱河造成了極大的恐慌陌粹,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件福压,死亡現(xiàn)場(chǎng)離奇詭異掏秩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)荆姆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門蒙幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胆筒,你說我怎么就攤上這事邮破。” “怎么了仆救?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵抒和,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我彤蔽,道長(zhǎng)摧莽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任顿痪,我火速辦了婚禮范嘱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘员魏。我一直安慰自己,他們只是感情好叠聋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布撕阎。 她就那樣靜靜地躺著,像睡著了一般碌补。 火紅的嫁衣襯著肌膚如雪虏束。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天厦章,我揣著相機(jī)與錄音镇匀,去河邊找鬼。 笑死袜啃,一個(gè)胖子當(dāng)著我的面吹牛汗侵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼晰韵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼发乔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雪猪,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤栏尚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后只恨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體译仗,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年官觅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纵菌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缰猴,死狀恐怖产艾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滑绒,我是刑警寧澤闷堡,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站疑故,受9級(jí)特大地震影響杠览,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纵势,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一踱阿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钦铁,春花似錦软舌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至黎比,卻和暖如春超营,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阅虫。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工演闭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颓帝。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓米碰,卻偏偏與公主長(zhǎng)得像窝革,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子见间,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • KVC(Key-value coding)鍵值編碼聊闯,單看這個(gè)名字可能不太好理解。其實(shí)翻譯一下就很簡(jiǎn)單了米诉,就是指iO...
    朽木自雕也閱讀 1,552評(píng)論 6 1
  • KVC(Key-Value Coding) KVC最常見的兩個(gè)用途: 給私有的成員變量賦值(當(dāng)然公有的也可以)比如...
    ForeverYoung21閱讀 1,165評(píng)論 1 15
  • KCV 其實(shí)由于ObjC的語言特性菱蔬,你根部不必進(jìn)行任何操作就可以進(jìn)行屬性的動(dòng)態(tài)讀寫,這種方式就是Key Value...
    TYM閱讀 1,053評(píng)論 0 4
  • 1.給私有的成員變量賦值(當(dāng)然公有的也可以) 比如一個(gè)類有一個(gè)私有成員變量(在.m文件中)史侣,用KVC的方式然后可以...
    sunny12閱讀 405評(píng)論 0 1
  • 八月十五中秋節(jié)惊橱,歡歡喜喜團(tuán)圓夜蚪腐。 哇~濃濃的愛國(guó)思鄉(xiāng)的氣息。這是弟弟小時(shí)候經(jīng)常念叨的兒歌税朴。而我回季,卻也將它深深地刻進(jìn)...
    VictorHank閱讀 232評(píng)論 0 0