iOS design MODE-KVC

Source: Internet
Author: User
<span id="Label3"></p><p><p><span style="font-size: 16px; color: #3366ff;">about the design mode of ios, I believe that everyone is not unfamiliar, the most common is the mvc, that is, the Model-view-controller mode, also we often use, this here is not in the narrative, here is the main talk about KVC this mode, if the text has flaws, please the vast number of Bo friends to correct ~ ~ </span></p></p><p><p><span style="font-size: 16px;"><strong>Talk about design Patterns</strong></span></p></p><p><p>Although the design patterns exist in our project projects at all times, we seldom pay attention to them, but use them unconsciously.</p></p><p><p>In the field of software design, The design pattern is a reusable solution to common problems. Design patterns are a series of templates that help you write more understandable and reusable code, and design patterns help you create loosely coupled code so that you can change or replace components in your code without much Effort.</p></p><p><p>So knowing some design patterns helps our code be more prescriptive and clear. Make our code style even Better.</p></p><p><p><span style="font-size: 16px;"><strong>Take a deep kvc.</strong></span></p></p><p><p>KVC full name key valued coding key value code</p></p><p><p>The reflection mechanism is in the running state, for any class, can know all the properties and methods of this class, for any one object, can call any of its methods and Properties. Java,c# all have this Mechanism. OBJC also have, so you do not have to do anything at the root of the dynamic read and write properties, that is, kvc.</p></p><p><p>The KVC method is provided by nskeyvaluecoding, which is the NSObject category, which means that almost all objects in OBJC support KVC Operations.</p></p><p><p>Person.h</p></p><pre><pre><span style="color: #0000ff;">@interface</span> <span style="color: #000000;">person:nsobject{ </span><span style="color: #0000ff;">int</span> <span style="color: #000000;"> weight;} @property (nonatomic,</span><span style="color: #0000ff;">readonly</span>, copy) nsstring *<span style="color: #000000;">name; @property (nonatomic,</span><span style="color: #0000ff;">readonly</span> <span style="color: #0000ff;">int</span> <span style="color: #000000;"></span> *<span style="color: #000000;"></span><span style="color: #0000ff;">ID</span> <span style="color: #000000;"> id;</span> -(instancetype) initwithdict: (nsdictionary *<span style="color: #000000;">) dict;</span> <span style="color: #0000ff;">@end</span></pre></pre><p><p>Person.m</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">@implementation</span></span><span style="color: #000000;"><span style="color: #000000;">person{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span><span style="color: #000000;"><span style="color: #000000;">_height;}</span></span>-(instancetype) initwithdict: (nsdictionary *<span style="color: #000000;"><span style="color: #000000;">) dict{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(self=<span style="color: #000000;"><span style="color: #000000;">[super Init]) { </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">common statements for Dictionary-to-model</span></span><span style="color: #000000;"><span style="color: #000000;">[self setvaluesforkeyswithdictionary:dict]; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;">self <span style="color: #000000;">;}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">The method that the <span style="color: #008000;">setting executes when the value of key is undefined</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>) SetValue: (<span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>) Value Forundefinedkey: (nsstring *<span style="color: #000000;"><span style="color: #000000;">) Key {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>([key isequaltostring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ID</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]) {self.id</span></span>=<span style="color: #000000;"><span style="color: #000000;">value; }}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">When the <span style="color: #008000;">value of key is not defined, the method that is executed when the value is taken</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>) valueforundefinedkey: (nsstring *<span style="color: #000000;"><span style="color: #000000;">) Key {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>([key isequaltostring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ID</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: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">self.id; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span>[NSNull<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">];}</span></span></pre><p><p>Main.m</p></p><pre>Person * P1 =<span style="color: #000000;"><span style="color: #000000;">[[person Alloc]init];D og</span></span>* D1 =<span style="color: #000000;"><span style="color: #000000;">[[Dog alloc] init];p 1.dog</span></span>=<span style="color: #000000;"><span style="color: #000000;">d1; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">setValue: Attribute value forkey: property name (for simple Path)</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">when you use KVC to indirectly modify an Object's properties, the system automatically determines the type of the Object's properties and completes the Conversion. such as "170" in the Program. </span></span>[P1 setValue:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> the</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>Forkey:<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: #000000;"><span style="color: #000000;">]; [P1 setValue:</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>Forkey:<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: #000000;"><span style="color: #000000;">]; [P1 setValue:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">1</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>Forkey:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ID</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;">setValue: Attribute Value forkeypath: Property path (for compound Path)</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">when using KVC to take a deeply nested path, simply give it a path to take out the desired Attribute. (. can be understood as a path.) has been entered). can help us to code very Convenient. </span></span>[P1 setValue:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dahuan</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>Forkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog.name</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;">Valueforkey: Property name, valueforkeypath: property name (for compound Path)</span></span>NSLog (<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">height =%d weight =%d ID =%@ dog.name =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [[p1 valueforkey:<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>] Intvalue],[[p1 valueforkey:<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>] Intvalue],[p1 valueforkey:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ID</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>],[P1 Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog.name</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]); log log: height</span></span>=<span style="color: #800080;"><span style="color: #800080;"></span> the</span>Weight =<span style="color: #800080;"><span style="color: #800080;"></span> -</span> <span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>=<span style="color: #800080;"><span style="color: #800080;">11111</span></span>Dog.name =<span style="color: #000000;"><span style="color: #000000;">Dahuan All properties can be assigned successfully nsdictionary</span></span>* Dict = @{<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;"></span> the</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;">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;"></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;">ID</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;">11101</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;"> }; </span>person</span>* P2 =<span style="color: #000000;"><span style="color: #000000;">[[person alloc] initwithdict:dict]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">height =%d weight =%d ID =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [[p2 valueforkey:<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>] INTVALUE],[[P2 valueforkey:<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>] INTVALUE],[P2 valueforkey:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ID</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]); log log: height</span></span>=<span style="color: #800080;"><span style="color: #800080;"></span> the</span>Weight =<span style="color: #800080;"><span style="color: #800080;"></span> -</span> <span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>=<span style="color: #800080;"><span style="color: #800080;">11101</span></span><span style="color: #000000;"><span style="color: #000000;">All properties can be assigned to a successful value</span></span></pre>KVC the order in which attributes are found <ol> <ol> <li>The key value of a property defined with @property</li> <li>The key value of the setter method</li> <li>Direct access to member variables, first find key, if not found, then find _key</li> <li>None of the above three types will be Called-(void) setValue: (id) value forundefinedkey: (nsstring *) key Method.</li> <li>If you do not rewrite the Setvalue:forundefinedkey program will crash immediately.</li> </ol> </ol><p><p>Note: KVC can access member variables, regardless of whether the Getter/setter method is provided, whether or not the visibility is readonly Decorated.</p></p>Application of Setvalue:forundefinedkey and Valueforundefinedkey<p><p>The main use of KVC is not only ORM mapping, is to convert dictionary to model, but some servers return the field may be OC keywords such as ' id ', ' description ' and so On. As the code above the example of the id, we can not let @property after the key value is the id, so use the uppercase ID instead, KVC is case-sensitive we do not worry. In this case, we can avoid the embarrassment of the keyword by assigning the key value of the ID to the key value of the ID in setvalue:forundefinedkey.</p></p>KVC Bottom-level Implementation<pre><pre>for <span style="color: #000000;">example, The following line KVC code: [person setValue:</span><span style="color: #800000;">@ "</span><span style="color: #800000;">Dahuan</span><span style="color: #800000;">"</span> forkey:<span style="color: #800000;">@</span>"<span style="color: #800000;">name</span> <span style="color: #800000;">"</span> <span style="color: #000000;"></span> = Sel_get_uid (<span style="color: #800000;">"</span><span style="color: #800000;">setvalue:forkey:</span><span style="color: #800000;">"</span><span style="color: #000000;"></span>= Objc_msg_lookup (person-> <span style="color: #000000;"></span> <span style="color: #800000;">@</span><span style="color: #800000;">"dahuan</span><span style="color: #800000;">"</span><span style="color: #800000;">@</span>"<span style="color: #800000;">name</span><span style="color: #800000;">"</span>);</pre></pre>KVC and runtime applications<pre><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span> <span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">MyModel.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span><objc/runtime.h><span style="color: #0000ff;"><span style="color: #0000ff;">@implementation</span></span><span style="color: #000000;"><span style="color: #000000;">MyModel</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">solution file</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>) Initwithcoder: (nscoder *<span style="color: #000000;"><span style="color: #000000;">) decoder{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(self =<span style="color: #000000;"><span style="color: #000000;">[super Init]) {unsigned</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Count =<span style="color: #800080;"><span style="color: #800080;">0</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;">gets the name of all member variables in the class</span></span>Ivar *ivar = class_copyivarlist ([mymodel<span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span>], &<span style="color: #000000;"><span style="color: #000000;">count); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>i =<span style="color: #800080;"><span style="color: #800080;">0</span></span>; i<count; i++<span style="color: #000000;"><span style="color: #000000;">) {Ivar IVA</span></span>=<span style="color: #000000;"><span style="color: #000000;">ivar[i]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*name =<span style="color: #000000;"><span style="color: #000000;">Ivar_getname (iva); NSString</span></span>*strname =<span style="color: #000000;"><span style="color: #000000;">[nsstring stringwithutf8string:name]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">to extract the value of the file</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>Value =<span style="color: #000000;"><span style="color: #000000;">[decoder decodeobjectforkey:strname]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">using KVC to assign a value to a property</span></span><span style="color: #000000;"><span style="color: #000000;">[self Setvalue:value forkey:strname]; } Free (ivar); } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;">self <span style="color: #000000;">;}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Archive</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>) Encodewithcoder: (nscoder *<span style="color: #000000;"><span style="color: #000000;">) encoder{unsigned</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span><span style="color: #000000;"><span style="color: #000000;">count; Ivar</span></span>*ivar = Class_copyivarlist ([mymodel<span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span>], &<span style="color: #000000;"><span style="color: #000000;">count); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> for</span>(<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>I=<span style="color: #800080;"><span style="color: #800080;">0</span></span>; i<count; i++<span style="color: #000000;"><span style="color: #000000;">) {Ivar IV</span></span>=<span style="color: #000000;"><span style="color: #000000;">ivar[i]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*name =<span style="color: #000000;"><span style="color: #000000;">Ivar_getname (iv); NSString</span></span>*strname =<span style="color: #000000;"><span style="color: #000000;">[nsstring stringwithutf8string:name]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">using KVC to take a value</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>Value =<span style="color: #000000;"><span style="color: #000000;">[self valueforkey:strname]; [encoder Encodeobject:value forkey:strname]; } Free (ivar);}</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@end</span></span></pre>nsarray/nsset, etc. all support KVC<pre>Person * P1 =<span style="color: #000000;"><span style="color: #000000;">[[person Alloc]init];D og</span></span>* D1 =<span style="color: #000000;"><span style="color: #000000;">[[Dog alloc] init];d 1.name</span></span>=<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">IPhone</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">;p 1.dog</span></span>=<span style="color: #000000;"><span style="color: #000000;">d1; </span>person</span>* P2 =<span style="color: #000000;"><span style="color: #000000;">[[person Alloc]init];D og</span></span>* D2 =<span style="color: #000000;"><span style="color: #000000;">[[Dog alloc] init];d 2.name</span></span>=<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">iOS</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">;p 2.dog</span></span>=<span style="color: #000000;"><span style="color: #000000;">d2; Nsarray</span></span>*persons=<span style="color: #000000;"><span style="color: #000000;">@[p1,p2]; Nsarray</span></span>*arraym=[persons Valueforkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Dog.name</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;">%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, arraym); log log: (iPhone, IOS)</span></span></pre>Reverse use of KVC<pre>Person * P1 =<span style="color: #000000;"><span style="color: #000000;">[[person alloc]init]; [P1 setValue:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> the</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>Forkey:<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: #000000;"><span style="color: #000000;">]; [P1 setValue:</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>Forkey:<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: #000000;"><span style="color: #000000;">]; [P1 setValue:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">11111</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>Forkey:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ID</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; Nsarray</span></span>* arr = @[<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;">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;">ID</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; Nsdictionary</span></span>* Dict =<span style="color: #000000;"><span style="color: #000000;">[P1 dictionarywithvaluesforkeys:arr]; 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;">, dict); log log: {height</span></span>=<span style="color: #800080;"><span style="color: #800080;"></span> the</span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">ID</span></span>=<span style="color: #800080;"><span style="color: #800080;">11111</span></span><span style="color: #000000;"><span style="color: #000000;">; Weight</span></span>=<span style="color: #800080;"><span style="color: #800080;"></span> -</span><span style="color: #000000;"><span style="color: #000000;">;}</span></span></pre><p><p>finally, Apple KVC official documents are attached:</p></p><p><p>Https://developer.apple.com/library/mac/documentation/General/Conceptual/DevPedia-CocoaCore/KeyValueCoding.html</p></p><p><p></p></p><p><p>iOS design MODE-KVC</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.