Мне нужно проверить, является ли объект типа NSString
или UIImageView
. Как я могу сделать это? Есть какой-то тип метода "isoftype"?
ios
objective-c
Джеймс Скидмор
источник
источник
[object isKindOfClass:[ClassName class]]
Ответы:
Если ваш объект есть
myObject
, и вы хотите проверить, является ли онNSString
, код будет:Точно так же, если вы хотите , чтобы проверить
myObject
дляUIImageView
:источник
Вы бы вероятно использовали
Это метод
NSObject
.Для получения дополнительной информации проверьте
NSObject
документацию.Вот как вы это используете.
Вы также можете попробовать сделать что-то подобное
источник
className
, он может работать или не работать в OS X, но не в iOS и не предназначен для этого. Кроме того,NSLog
они не делают то, что, как я думаю, вы имели в виду - они проверяют имя класса (всегда строка) и класс кодера, как ни странно, вместо класса фактического элемента.NSLog(@"Is of type: %@", [element class]);
будет работать в iOS 7Если вы хотите различать суперкласс и унаследованный класс, вы можете использовать:
Использование
- (BOOL)isKindOfClass:(Class)aClass
в этом случае приведет к ИСТИНАМ оба раза, потому что наследованный класс также является разновидностью суперкласса.источник
isMemberOfClass:
вернетсяNO
при работе с подклассами.Запустив простой тест, я решил документировать, что работает, а что нет. Часто я вижу людей, проверяющих, является ли класс объекта членом другого класса или равен другому классу.
Для строки ниже у нас есть некоторые плохо сформированные данные, которые могут быть
NSArray
,NSDictionary
или(null)
.Это тесты, которые были выполнены:
isKindOfClass
работал довольно хорошо, покаisMemberOfClass
нет.источник
Вы можете использовать следующий код, если хотите проверить типы примитивных типов данных.
источник
Просто, [класс yourobject] вернет имя класса вашего объекта.
источник
Class
объект. Однако,description
этот объект будет именем класса в виде строки, поэтому вы все равно можете записать его в консоль.