Как распознать, является ли объект NSString в этом случае?

#objective-c #cocoa

#objective-c #cocoa

Вопрос:

Этот код

 if ( [currentValue isKindOfClass:NSClassFromString(@"NSString")] ) {
            CBDebug(@"this is a string");
  

хорошо работает, когда тип currentValue равен __NSCFString

но он не распознает строку, если тип __NSCFConstantString

Как я могу это исправить? (Я на OSX)

Спасибо

Ответ №1:

Попробуйте это:

 if ( [currentValue isKindOfClass:[NSString class]] ) {    
            CBDebug(@"this is a string");
}
  

Ответ №2:

Вместо проверки текстовой строки класса, попробуйте следующее:

 [myObject isKindOfClass:[NSString class]]
  

Ответ №3:

Попробуйте это [obj isKindOfClass:[NSString class]];
Обычно это требуется NSClassFromString только при тестировании имен классов, которые могут быть вам недоступны.
Примечание: Будьте осторожны при использовании isKindOfClass: метода для объектов, представленных кластером классов. Из-за природы кластеров классов объект, который вы получаете обратно, не всегда может быть того типа, который вы ожидали. isKindOfClass: вернет YES, если получатель где-то наследует от класса, переданного в качестве аргумента.