Ne NSDictionary initWithObjectsAndKeys poignées NULL/néant des objets et d'autres que NSString objets
Je suis en train d'initialiser NSDictionary, mais il me donne l'erreur suivante:
Program received signal: “EXC_BAD_ACCESS”.
Voici mon code problématique[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
Et voici Quiz.h fichier de référence
@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
Comment dois-je le corriger, s'il vous plaît aidez-moi, je suis nouveau à l'objective-c, c'est me rend fou. Le NSDictionary initWithObjectsAndKeys manipuler des objets autres que des cordes et des objets nuls?
OriginalL'auteur | 2012-03-19
Vous devez vous connecter pour publier un commentaire.
NSDictionary
ne peut pas stocker de valeurs scalaires (comme BOOL, NSInteger, etc.), il peut stocker uniquement les objets. Vous devez emballer vos valeurs scalaires dansNSNumber
pour les stocker:Mais je suis confronté à un autre problème maintenant, quand je fais: 'userAnswer=[NSNull null]" il a toujours la valeur OUI? Comment puis-je initialiser Bool avec la valeur Null?
Accepter la réponse si il a aidé. Les variables booléennes peuvent pas être
NULL
, ils sontYES
(non-nulle) ouNO
(0 = NULL == NO
). Vous avezuserAnswer = [NSNull null] == YES
depuis[NSNull null]
est un objet, et que vous définissezuserAnswer
avec le pointeur vers cet objet, et le pointeur lui-même n'est pas zéro, il est doncYES
. Ne confondez pas les objets avec des valeurs scalaires.OKsss. Merci beaucoup.
Une option est d'avoir une autre variable BOOLEAN avec l'état de votre variable, quelque chose comme
userAnswerWasSet
.OriginalL'auteur Stanislav Yaglo