cocoa's Key-value coding

cocoa's Key-value coding,第1张

概述Key-value coding(KVC)机制允许set(设置)和get(获取)变量值。这里的变量名可能是一个字符串,也就是Key。例如,类Company拥有一个类型为NSString,叫做companyName的变量。   @interface Company : NSObject{ NSString *companyName;}  我们就可以这样设置和获取Company实例的com

Key-value Coding(KVC)机制允许set(设置)和get(获取)变量值。这里的变量名可能是一个字符串,也就是Key。例如,类Company拥有一个类型为Nsstring,叫做companyname的变量。

 

@interface Company : NSObject{    Nsstring *companyname;}

 我们就可以这样设置和获取Company实例的companyname值:

//设置值Company *company = [[Company alloc] init];[company setValue:@"Apple" forkey:@"companyname"]; //获取值Nsstring *x = [company valueForKey:@"companyname"];

实例setValue:forKey和valueForKey:的方法在NSObject中有定义。

 创建名为KVCFun的项目,新建名为AppController的Objective-C Class文件。

 AppController.h和AppController.m的代码分别如下:

 

#import <Foundation/Foundation.h> @interface AppController : NSObject {@private    int fIDo; } - (int) fIDo;- (voID) setFIDo:(int) x; - (IBAction) incrementFIDo: (ID)sender; @end

 

#import "AppController.h"  @implementation AppController - (ID)init{    self = [super init];    if (self) {        //设置Key        [self setValue:[NSNumber numberWithInt:5]                forKey:@"fIDo"];         NSNumber *n = [self valueForKey:@"fIDo"];        NSLog(@"fIDo = %@",n);     }     return self;} - (int) fIDo{    NSLog(@"-fIDo is returning %d",fIDo);    return fIDo;} - (voID) setFIDo:(int) x{    NSLog(@"-setFIDo is called with %d",x);    fIDo = x;} - (IBAction) incrementFIDo:(ID)sender{    //当直接修改值时,通知观察者    [self willChangeValueForKey:@"fIDo"];    fIDo++;    NSLog(@"fIDo is Now %d",fIDo);    [self dIDChangeValueForKey:@"fIDo"];} - (voID)dealloc{    [super dealloc];} @end

 

打开MainMenu.nib,添加一个SlIDer、一个Label、一个button控件,如下图:

 

 

将SlIDer的Attributes Inspector->Control->State设为“连续的”,再把Binding Inspector->value邦定到AppController实例的fIDo key上。

 

将Label也邦定到AppController上,Model Key Path设为fIDo。

 

button链接到incrementFIDo:action上。

 

 

@property和@synthesize

 

我们可以使用property来代替fIDo和setFIDo,并且使用synthesize来实现存取方法。

 
使用下面的代码替换AppController.h中的fIDo和setFIDo:

@property (reaDWrite,assign) int fIDo;

使用@synthesize来替换fIDo和setFIDo,程序可以正常运行。

总结

以上是内存溢出为你收集整理的cocoa's Key-value coding全部内容,希望文章能够帮你解决cocoa's Key-value coding所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1064230.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存