С NSDictionary вы можете определить тип данных значения?

Для iOS, учитывая некоторые пары ключей/значений NSDictionary, в которые были добавлены значения строк, в качестве NSString и int/float были добавлены значения NSNumber, существует ли способ проверить тип данных значение, чтобы увидеть, является ли оно NSString или NSNumber?

Ответы

Ответ 1

NSObject предлагает:

- (BOOL)isKindOfClass:(Class)aClass

если obj - это значение, которое вы выберете из NSDictionary, затем выполните проверку:

[obj isKindOfClass:[NSString class]]
[obj isKindOfClass:[NSNumber class]]

Если вы проверяете их, и вы не ожидаете ничего, кроме NSString или NSNumber в словаре, я бы добавил NSAssert в блок else.

Здесь больше комментариев о нюансах NSString и NSCFString:

В Objective-C, как я могу проверить тип объекта?

Ответ 2

Словарь возвращает идентификатор, вы можете проверить его тип класса следующим образом

if ([[dictionary valueForKey:@"key"] isKindOfClass:[NSString class]]) {
        NSLog(@"it is a string");
    }
    else {
        NSLog(@"it is number");
    }