0

cellForRowAtIndexPath で次のコードを使用しています。UILabel にデータを入力すると、エラーが送信されます

NSDictionary *benchmarkDictionary = (NSDictionary *)[benchmarkArray objectAtIndex:indexPath.row];

((UILabel *)[cell viewWithTag:15]).text = [benchmarkDictionary objectForKey:@"benchmarkTitle"];
((UILabel *)[cell viewWithTag:16]).text = [benchmarkDictionary objectForKey:@"benchmarkDescription"];

例外: -[Benchmark objectForKey:]: 認識されないセレクターがインスタンス 0x75d59c0 2013-03-08 16:21:39.515 Fdtrainer[2719:11303] に送信されました:]: インスタンス 0x75d59c0' に送信された認識されないセレクター

私のベンチマーククラスは次のとおりです。

@interface Benchmark : NSObject

@property (nonatomic, retain) NSString *bid;
@property (nonatomic, retain) NSString *benchmarkTitle;
@property (nonatomic, retain) NSString *benchmarkDescription;

-(id)initWithCoder: (NSCoder *)coder;
-(void)encodeWithCoder:(NSCoder *)encoder;

@end

@implementation Benchmark

@synthesize bid;
@synthesize benchmarkTitle;
@synthesize benchmarkDescription;

- (id) initWithCoder:(NSCoder *)coder {

    self = [super init];
    if(self) {
        bid = [coder decodeObjectForKey:@"id"];
        benchmarkTitle = [coder decodeObjectForKey:@"benchmarkTitle"];
        benchmarkDescription = [coder decodeObjectForKey:@"benchmarkDescription"];
    }
    return self;
}

- (void) encodeWithCoder:(NSCoder *)encoder {

    [encoder encodeObject:bid forKey:@"id"];
    [encoder encodeObject:benchmarkTitle forKey:@"benchmarkTitle"];
    [encoder encodeObject:benchmarkDescription forKey:@"benchmarkDescription"];
}

@end
4

2 に答える 2

0

プロパティに間違った方法でアクセスしていると思います:

これを試して :

@interface Benchmark : NSObject

@property (nonatomic, retain) NSString *bid;
@property (nonatomic, retain) NSString *benchmarkTitle;
@property (nonatomic, retain) NSString *benchmarkDescription;

-(id)initWithCoder: (NSCoder *)coder;
-(void)encodeWithCoder:(NSCoder *)encoder;

@end

@implementation Benchmark

@synthesize bid = _bid;
@synthesize benchmarkTitle = _benchmarkTitle;
@synthesize benchmarkDescription = _benchmarkDescription;

- (id) initWithCoder:(NSCoder *)coder {

self = [super init];
if(self) {
    _bid = [coder decodeObjectForKey:@"id"];
    _benchmarkTitle = [coder decodeObjectForKey:@"benchmarkTitle"];
    _benchmarkDescription = [coder decodeObjectForKey:@"benchmarkDescription"];
}
return self;
}

- (void) encodeWithCoder:(NSCoder *)encoder {

[encoder encodeObject:_bid forKey:@"id"];
[encoder encodeObject:_benchmarkTitle forKey:@"benchmarkTitle"];
[encoder encodeObject:_benchmarkDescription forKey:@"benchmarkDescription"];
}
于 2013-03-08T11:56:10.243 に答える
0

次の行が問題を引き起こしているようです。

NSDictionary *benchmarkDictionary = (NSDictionary *)[benchmarkArray objectAtIndex:indexPath.row];

ベンチマーク配列に NSDictionary が含まれていることを確認してください。何かを NSDictionary にキャストしても、それは 1 つにはなりません。BenchmarkArray には NSObject タイプの Benchmark オブジェクトが含まれているようで、objectForKey セレクターに応答しません。

于 2013-03-09T02:03:04.637 に答える