Je suis à la définition des valeurs pour les propriétés de mon NSManagedObject
, ces valeurs sont à venir à partir d'un NSDictionary
correctement sérialisé à partir d'un fichier JSON. Mon problème, c'est que, lorsque la valeur est [NSNull null]
, je ne peux pas attribuer directement à la propriété:
fight.winnerID = [dict objectForKey:@"winner"];
cela jette un NSInvalidArgumentException
"winnerID"; desired type = NSString; given type = NSNull; value = <null>;
Je pourrais facilement vérifier la valeur de [NSNull null]
et attribuer nil
à la place:
fight.winnerID = [dict objectForKey:@"winner"] == [NSNull null] ? nil : [dict objectForKey:@"winner"];
Mais je pense que ce n'est pas élégant et devient malpropre avec beaucoup de propriétés à définir.
Aussi, cela devient plus difficile lorsque vous traitez avec des NSNumber
propriétés:
fight.round = [NSNumber numberWithUnsignedInteger:[[dict valueForKey:@"round"] unsignedIntegerValue]]
L' NSInvalidArgumentException
est maintenant:
[NSNull unsignedIntegerValue]: unrecognized selector sent to instance
Dans ce cas, j'ai pour traiter l' [dict valueForKey:@"round"]
avant de faire un NSUInteger
de la valeur de cela. Et la solution est allé.
J'ai essayé de faire un @essayez @bloc catch, mais dès que la première valeur est attrapé, il saute à l'ensemble de l' @bloc try et la prochaine propriétés sont ignorées.
Est-il une meilleure façon de gérer [NSNull null]
ou peut-être prendre cela totalement différent, mais plus facile?