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オブジェクト以外のオブジェクトを処理しますか?
NSDictionary
はスカラー値(BOOL、NSIntegerなど)を格納できず、オブジェクトのみを格納できます。スカラー値を格納するには、スカラー値をNSNumber
にラップする必要があります。
NSDictionary *qDictionary = [[NSDictionary alloc]
initWithObjectsAndKeys:question,@"questionText",
[NSNumber numberWithInteger:questionId],@"questionId",
[NSNumber numberWithBool:userAnswer],@"userAnswer",
[NSNumber numberWithBool:correctAnswer],@"correctAnswer",
nil];