Domanda

Sto cercando di utilizzare la libreria JSONKit e hanno incluso i file di origine nel mio progetto. Ho incluso l'intestazione JSONKit.h in modo che la categoria incluso dà oggetti NSDictionary i selettori JSONData e JSONString.

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

Ma in fase di esecuzione ottengo il seguente errore:

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

Perché la categoria non aggiunge i metodi appropriati per NSDictionary oggetti?

È stato utile?

Soluzione

Sto rispondendo alla mia domanda proprio perché ho appena capito.

Il mio codice fa parte di una libreria statica che viene fatto riferimento da un'altra applicazione iOS. Quando tra cui una libreria statica che esporta categorie, l'applicazione che utilizza la categoria devono essere collegati con il "-ObjC" bandiera linker.

Altri suggerimenti

Mentre la risposta accettata risolto il problema per me, capire perché lo ha fatto (e perché non potrebbe) è sicuramente utile. Per uno sguardo più dettagliato a questo problema e le possibili soluzioni, vedi questo post .

E 'un po' di un errore di n00b, ma mi sono imbattuto in esattamente la stessa eccezione quando ho importato il file JSONKit.h e JSONKit.m nel mio progetto, ma non barrare la casella per aggiungerlo al bersaglio in Xcode.

Apri JSONKit.m, mostrano la sezione File ispettore del pannello Utilities, e nella composizione di destinazione assicurarsi che non v'è una casella spuntata accanto al tuo app.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top