Pregunta

Estoy tratando de usar la biblioteca JSONKIT y he incluido los archivos de origen en mi proyecto. He incluido el encabezado JSONKIT.H para que la categoría incluida les dé objetos NSDictionary los selectores JSondata y JSonstring.

  NSMutableDictionary* root = [NSMutableDictionary dictionary];
  [root setValue:@"CONNECT" forKey:@"command"];
  NSData* data = [root JSONData];

Pero en tiempo de ejecución recibo el siguiente error:

 -[__NSCFDictionary JSONString]: unrecognized selector sent to instance 0x784b870

¿Por qué la categoría no agrega los métodos apropiados a los objetos NSDictionary?

¿Fue útil?

Solución

Estoy respondiendo a mi propia pregunta porque lo descubrí.

Mi código es parte de una biblioteca estática a la que se hace referencia desde otra aplicación iOS. Al incluir una biblioteca estática que exporta categorías, la aplicación que está utilizando la categoría debe estar vinculada con el indicador de enlazador "-objc".

Otros consejos

Si bien la respuesta aceptada resolvió el problema para mí, comprender por qué lo hizo (y por qué podría no hacerlo) es definitivamente útil. Para ver más detallado este problema y posibles soluciones, Ver esta publicación.

Es un error N00B, pero me encontré exactamente con la misma excepción cuando importé los archivos JSONKIT.H y JSONKIT.M en mi proyecto, pero no marcé la casilla para agregarlo al objetivo en XCode.

Abra jsonkit.m, muestre la sección del inspector de archivos del panel de utilidades, y en la membresía de destino, asegúrese de que haya una casilla marcada junto a su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top