web-dev-qa-db-ja.com

NSDictionaryinitWithObjectsAndKeysはNULL / nilオブジェクトおよびNSStringオブジェクト以外を処理しますか

NSDictionaryを初期化しようとしていますが、次のエラーが発生します。

Program received signal:  “EXC_BAD_ACCESS”.

これが私の問題のあるコードです[Quiz.m]:

@implementation Quiz

@synthesize question;
@synthesize correctAnswer;
@synthesize userAnswer;
@synthesize questionId;

-(NSString*) getAsJsonString
{   
    // Following line gives the error
    NSDictionary *qDictionary=[[NSDictionary alloc] initWithObjectsAndKeys:question,@"questionText",questionId,@"questionId",userAnswer,@"userAnswer",correctAnswer,@"correctAnswer",nil];

    ..............
    .........
    ............
    return jsonString;
}
@end

そしてここに参照用のQuiz.hファイルがあります

@interface Quiz : NSObject {

@public
    NSString * question;
    BOOL correctAnswer;
    BOOL userAnswer;
    NSInteger questionId;
}

@property (nonatomic,retain) NSString * question;
@property (nonatomic, assign) NSInteger questionId;
@property (nonatomic,assign) BOOL correctAnswer;
@property (nonatomic,assign) BOOL userAnswer;

- (NSString*) getAsJsonString;
@end

どのように修正すればよいですか、助けてください。私はObjective Cを初めて使用し、それが私を狂わせています。 NSDictionary initWithObjectsAndKeysは、文字列およびnullオブジェクト以外のオブジェクトを処理しますか?

15
user517491

NSDictionaryはスカラー値(BOOL、NSIntegerなど)を格納できず、オブジェクトのみを格納できます。スカラー値を格納するには、スカラー値をNSNumberにラップする必要があります。

NSDictionary *qDictionary = [[NSDictionary alloc]
    initWithObjectsAndKeys:question,@"questionText",
                           [NSNumber numberWithInteger:questionId],@"questionId",
                           [NSNumber numberWithBool:userAnswer],@"userAnswer",
                           [NSNumber numberWithBool:correctAnswer],@"correctAnswer",
                           nil];
41
Stanislav Yaglo