【发布时间】:2024-05-20 10:50:01
【问题描述】:
我正在使用 setValuesForKeysWithDictionary 来填充我的模型对象。模型对象定义为
@interface Media : NSObject
{
NSString *userId;
NSString *mediaType;
}
@property(nonatomic,copy) NSString *userId;
@property(nonatomic,copy) NSString *mediaType;
属性合成的样子,
@implementation Media
@synthesize userId;
@synthesize mediaType;
我初始化类如下,
NSMutableDictionary *dic = [NSMutableDictionary new];
[dic setValue:@"aaa" forKey:@"userId"];
[dic setValue:@"bbb" forKey:@"mediaType"];
Media *obj = [[Media alloc] init];
[obj setValuesForKeysWithDictionary:dic];
这会随着消息而崩溃
'[<Media 0x8a9f280> valueForUndefinedKey:]: this class is not key value coding-compliant for the key aaa.'
setValuesForKeysWithDictionary: 怎么把我的值当作键??还是我误解了 setValuesForKeysWithDictionary: 函数的目的?
【问题讨论】:
-
你把这段代码放在哪里?我将下面的代码“并按如下方式初始化类”复制到我的应用程序委托中,并使用您显示的 .h 文件定义了一个新类 Media。对我来说效果很好。
-
我最初的想法是,它与如何/是否在 Media 的实现中合成属性有关。我无法使用最新版本的 Xcode (4.4.1) 重现您的问题,因为合成是自动完成的。
-
实际上出于测试目的,我正在 appDelegate 中尝试这个,因为这个问题,我整晚都在分裂头发。太奇怪了。
-
我使用的是 xCode 4.3.3。有趣的是,如果我将其修改为 [dic setValue:@"userId" forKey:@"userId"]; [dic setValue:@"mediaType" forKey:@"mediaType"]; , 运行没有问题。
标签: iphone objective-c ios cocoa-touch key-value-coding