Je fais un cadre et j'ai ce code (conditions
est un NSDictionary):stringWithFormat: avec datatype inconnu
for (NSString *key in conditions) {
id value = [[conditions valueForKey:key] retain];
// Check if number or string
if ([value class] == [NSString class]) {
conditionsString = [NSString stringWithFormat:@"%@='%@' ", key, value];
} else {
conditionsString = [NSString stringWithFormat:@"%@=%@ ", key, value];
}
}
Si le value
est une NSString, citations devraient être ajoutés, sinon les codes ne doivent pas être ajoutés . Cependant, si ce n'est pas un NSString, je ne connais pas le type de données value
, car il pourrait être NSNumber, NSInteger, int, float, double, etc ... Je ne peux pas simplement utiliser %@
ou %d
mais je suis sûr que quelqu'un sur SO sait comment faire cela? Merci.
vous ne pouvez pas ajouter un 'NSInteger',' int', 'float' ou' double' à un NSDictionary parce qu'ils sont tous struct C. Vous ne pouvez avoir que des objets de type 'NSObject' comme @nesium l'a dit. –
Aha, donc tous les numéros devraient être un NSNumber? –