творю рамки и у меня есть этот код (conditions
является NSDictionary):stringWithFormat: с неизвестным типом данных
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];
}
}
Если value
является NSString, котировки должны быть добавлены, иначе коды не должны быть добавлены , Однако, если не NSString, я не знаю тип данных value
, так как это может быть NSNumber, NSInteger, int, float, double и т. Д. Я не могу просто использовать %@
или %d
, но я уверен, что кто-то на SO знает, как это сделать? Благодарю.
вы не можете добавить 'NSInteger',' 'int', float' или' double' к NSDictionary, потому что все они являются C Структуры. У вас могут быть только объекты типа 'NSObject', как сказал @nesium. –
Ага, поэтому все числа должны быть NSNumber? – 2010-10-03 12:28:55