0

我正在使用 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: 函数的目的?

4

2 回答 2

0

终于找到了答案。这不是关于设置值,而是关于检索部分。我正在使用以下方法从模型中读回值。

-(NSDictionary*) dictionaryRepresentation
{ 
   return [self dictionaryWithValuesForKeys:[NSArray arrayWithObjects:,userId,mediaType,     nil]];
}

正如你所看到的,我使用了普通的变量名而不是键。@"userId"、@"mediaType"。

我最近将 xcode 更改为不同的字体主题,但仍然习惯于新的字体颜色集。感谢大家宝贵的时间。

于 2012-08-18T06:10:24.177 回答
0

在像这样声明变量时添加@objc 作为前缀。

class Customer: NSObject
{
    @objc var name: String?
    @objc var email: String?
}

它应该工作。

于 2020-04-17T06:33:05.577 回答