iOS Development UI KVC (value/assignment)-KVO (observe A change in an Object's properties)

Source: Internet
Author: User
<span id="Label3"></p><p><p>I. Kvc:key value coding, typically used to assign a value to an Object's properties</p></p><p><p>1. KVC Assignment</p></p><pre><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1.1 founder</span></span>Ldperson *p =<span style="color: #000000;"><span style="color: #000000;">[[ldperson alloc] Init];self.person</span></span>=<span style="color: #000000;"><span style="color: #000000;">p;</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1.2 Creating a dog</span></span>Lddog *dog =<span style="color: #000000;"><span style="color: #000000;">[[lddog alloc] init];</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1.3 Assigning a dog to a person</span></span>[p Setvalue:dog Forkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1.4 Assign a value to Dog's weight property by KVC \</span></span><span style="color: #000000;">the <span style="color: #000000;">Weight property of the Owner's dog is automatically found when the value is assigned [p setvalue:@</span></span><span style="color: #800080;"><span style="color: #800080;">20.0</span></span>Forkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog.weight</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog.weight</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]); [dog print];</span></span></pre><p><p>2. KVC Dictionary Assignment</p></p><pre><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2.1 Create a dictionary, the property of the person is the key, corresponding to the assigned value</span></span>Nsdictionary *dict = @{<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">name</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Jack</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> age</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Ten</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Height</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">1.65</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">};</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2.2 Assigning a Person object property by keys in the dictionary</span></span><span style="color: #000000;"><span style="color: #000000;">[p setvaluesforkeyswithdictionary:dict]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">name =%@, age =%@, Height =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">name</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>], [p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> age</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>], [p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Height</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>]);</pre><p><p>3. Custom Dictionaries</p></p><pre><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3.1 Defining Dictionaries</span></span>Nsdictionary *dict1 = @{<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">name</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Jim</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> age</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> -</span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Height</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">1.75</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>: @[@{<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> -</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>}, @{<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">98</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>}, @{<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> $</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>}, @{<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">198</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>}],<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>: @{<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Weight</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">45.89</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">}};</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3.2 KVC Value Assignment</span></span><span style="color: #000000;"><span style="color: #000000;">[p setvaluesforkeyswithdictionary:dict1];</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3.3 The dictionary is stored in the output boos</span></span>NSLog (<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]); NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">dog.weight =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog.weight</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]);</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3.4 traversal, Let Books store dictionary</span></span>Nsmutablearray *arraym =<span style="color: #000000;"><span style="color: #000000;">[nsmutablearray array];</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(nsdictionary *dict<span style="color: #0000ff;"><span style="color: #0000ff;">inch</span></span>[p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]) {ldbook</span></span>*book =<span style="color: #000000;"><span style="color: #000000;">[ldbook bookwithdict:dict]; [arraym addobject:book];} [p Setvalue:arraym forkeypath:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>]);</pre><p><p>4. KVC Value</p></p><pre>Nsmutablearray *TEMPM =<span style="color: #000000;"><span style="color: #000000;">[nsmutablearray array];</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">4.1 KVC Take out the value of the price in the array books</span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(ldbook *book<span style="color: #0000ff;"><span style="color: #0000ff;">inch</span></span>[p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]) {[tempm addobject:[book valueforkeypath:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]];} NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, tempm);</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">4.2 KVC Take out the maximum/minimum/average/number of price in the array</span></span>NSLog (<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Max =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [[p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>] Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">@max.</span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]); NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Min =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [[p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>] Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">@min.</span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]); NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">AVG =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [[p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>] Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">@avg.</span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]); NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Count =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [[p Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Books</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>] Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">@count.</span> price</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>]);</pre><p><p>Two. Kvo:key Value OBserver (viewer)</p></p><p><p>By KVO you can observe that the property value of an object changes</p></p><p><p>1. Create an observer for person to observe the Name property</p></p><pre><pre>[p addobserver:self forkeypath:<span style="color: #800000;">@ "</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span> options:nskeyvalueobservingoptionnew | Nskeyvalueobservingoptionold context:nil];</pre></pre><p><p>2. Change the value of the Person's name</p></p><pre><pre>[p setValue:<span style="color: #800000;">@ "</span><span style="color: #800000;">ldd</span><span style="color: #800000;">"</span> forkey:<span style="color: #800000;">@ "</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>];</pre></pre>3. When the value of Person's name changes, a callback is<p><p>-(void) observevalueforkeypath: (nsstring *) keypath ofobject: (id) object change: (nsdictionary *) change context: (void *) Context</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark-implement Kvo callback method<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;">* * <span style="color: #008000;">This method is called when the Object's property is changed * * @param keypath Listening Properties * @param Object Listener * @param change new value and old value * @param context extra number According</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>) observevalueforkeypath: (nsstring *) keypath ofobject: (<span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>)<span style="color: #0000ff;"><span style="color: #0000ff;">Object</span></span>Change: (nsdictionary *) Change Context: (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>*<span style="color: #000000;"><span style="color: #000000;">) Context{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">KeyPath =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, keypath); NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Object =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">Object</span></span><span style="color: #000000;"><span style="color: #000000;">); NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;">change <span style="color: #800000;">=%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, change);}</span></span></pre><p><p>4. Destroy the Observer after the callback is completed</p></p><pre><pre><span style="color: #008000;">/*</span> <span style="color: #008000;">* * </span> <span style="color: #008000;">*</span>/-<span style="color: #0000ff;">(void</span><span style="color: #000000;">) dealloc{ [self.person removeobserver:self forkeypath:</span><span style="color: #800000;">@ "</span> <span style="color: #800000;"> Name</span><span style="color: #800000;">"context:nil"</span> <span style="color: #000000;"> ;}</span></pre></pre><p><p></p></p><p><p>iOS Development UI KVC (value/assignment)-KVO (observe A change in an Object's properties)</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.