Necesito probar si el objeto es de tipo NSStringo UIImageView. ¿Cómo puedo lograr esto? ¿Hay algún tipo de método "isoftype"?
ios
objective-c
James Skidmore
fuente
fuente

[object isKindOfClass:[ClassName class]]Respuestas:
Si su objeto es
myObject, y desea probar para ver si es unNSString, el código sería:Del mismo modo, si desea probar
myObjectparaUIImageView:fuente
Probablemente usarías
Este es un método de
NSObject.Para más información consulte la
NSObjectdocumentación.Así es como usas esto.
También podrías intentar hacer algo como esto
fuente
className, puede o no funcionar en OS X, pero no está en iOS y no debe usarse para esto. Además, esosNSLogno hacen lo que creo que querías que hicieran: están comprobando el nombre de la clase (siempre una cadena) y la clase del codificador, curiosamente, en lugar de la clase del elemento real.NSLog(@"Is of type: %@", [element class]);funcionará en iOS 7Cuando desee diferenciar entre una superclase y la clase heredada, puede usar:
El uso
- (BOOL)isKindOfClass:(Class)aClassen este caso daría como resultado VERDADERO las dos veces porque la clase heredada también es una especie de superclase.fuente
isMemberOfClass:regresaráNOcuando se trate de subclases.Al ejecutar una prueba simple, pensé en documentar lo que funciona y lo que no. A menudo veo personas que comprueban si la clase del objeto es miembro de la otra clase o si es igual a la otra clase.
Para la siguiente línea, tenemos algunos datos mal formados que pueden ser an
NSArray, anNSDictionaryo(null).Estas son las pruebas que se realizaron:
isKindOfClassfuncionó bastante bien mientrasisMemberOfClassno lo hizo.fuente
Puede utilizar el siguiente código en caso de que desee verificar los tipos de tipos de datos primitivos.
fuente
Simple, [clase yourobject] devolverá el nombre de clase de yourobject.
fuente
Classobjeto. Sin embargo, eldescriptionde este objeto será el nombre de la clase como una cadena, por lo que aún puede iniciar sesión en la consola.