Estoy tratando de inicializar NSDictionary pero me da error siguiente:¿El NSDictionary initWithObjectsAndKeys trata los objetos NULL/Nil y que no sean objetos NSString
Program received signal: “EXC_BAD_ACCESS”.
Aquí está mi código problemático [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
Y aquí es Quiz.h archivo para referencia
@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ómo debo solucionarlo, por favor ayúdame, soy nuevo en el objetivo c y me está volviendo loco. ¿NSDictionary initWithObjectsAndKeys maneja objetos que no sean cadenas y objetos nulos?
Gracias esto resolvió mi problema. +1 –
Pero ahora enfrento otro problema, cuando lo hago: 'userAnswer = [NSNull null]' siempre tiene valor SÍ? ¿Cómo puedo inicializar Bool con valor nulo? –
Acepte la respuesta si fue de ayuda. Las variables booleanas no pueden ser 'NULL', son' YES' (distinto de cero) o 'NO' (' 0 = NULL == NO'). Tiene 'userAnswer = [NSNull null] == YES', ya que' [NSNull null] 'es un objeto, y establece' userAnswer' con el puntero a este objeto, y el puntero en sí no es cero, por lo que es 'SÍ' . No confundas objetos con valores escalares. –