NSDictionary initWithObjectsAndKeys обрабатывает объекты 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
Как мне исправить это, пожалуйста, помогите мне, я новичок в объективе c, и это сводит меня с ума. NSDictionary initWithObjectsAndKeys обрабатывает объекты, отличные от строковых и нулевых объектов?
Ответы
Ответ 1
NSDictionary
не может сохранять скалярные значения (например, BOOL, NSInteger и т.д.), он может хранить только объекты. Вы должны упаковать ваши скалярные значения в NSNumber
, чтобы сохранить их:
NSDictionary *qDictionary = [[NSDictionary alloc]
initWithObjectsAndKeys:question,@"questionText",
[NSNumber numberWithInteger:questionId],@"questionId",
[NSNumber numberWithBool:userAnswer],@"userAnswer",
[NSNumber numberWithBool:correctAnswer],@"correctAnswer",
nil];