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 に答える