我有一个名为“ Book”的类,其源代码如下:-

书本

#import <"UIKit/UIKit.h>


@interface Book : NSObject {

    NSInteger bookID;
    NSString *title;    //Same name as the Entity Name.
    NSString *author;   //Same name as the Entity Name.
    NSString *summary;  //Same name as the Entity Name.

}

@property (nonatomic, readwrite) NSInteger bookID;

@property (nonatomic, retain) NSString *title;

@property (nonatomic, retain) NSString *author;

@property (nonatomic, retain) NSString *summary;

@end


书本

#import "Book.h"

@implementation Book

@synthesize title, author, summary, bookID;

-(void) dealloc {

    [summary release];
    [author release];
    [title release];
    [super dealloc];
}

@end


然后我可以在另一堂课中写:

Book *aBook = [[Book alloc]init];
[aBook setValue:currentElementValue forKey:elementName];


如果是,那为什么呢?因为通常使用setvalue和forkey将数据存储在NSMutableDictionary中。

最佳答案

基本上,键值编码旨在用于对象的属性。 Key-Value Coding Programming Guide从各行开始,


  键值编码是一种机制,用于间接访问对象的属性,而不是通过调用访问器方法或通过实例变量直接访问它们,而是使用字符串来标识属性。本质上,键值编码定义了应用程序的访问器方法实现的模式和方法签名。


setObject:forKey:和removeObjectForKey:方法旨在与词典一起使用。您也可以使用setValue:forKey:方法将值设置为字典。但是,不能将setObject:forKey:方法用于类对象。

另外一个区别是setObject:forKey:不接受nil作为值。相反,您应该使用NSNull作为值。但是setValue:forKey:接受nil并从字典中删除键,从而节省了内存。

[如果我在某个地方错了,请有人纠正我!]

关于objective-c - 我们可以为类对象使用setvalue和forkey属性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6788336/

10-12 05:52