2011-10-22 3 views
13

Davvero non capisco cosa sta succedendo qui.NSData isEqualtoData

Ho una funzione che sta ottenendo i primi 3 byte da un oggetto NSData, receivedStream e inserendoli in un altro oggetto NSData, temp, tramite un array di caratteri. Quindi confrontandolo con un oggetto NSData creato da un buffer di array di caratteri. Entrambi i nuovi oggetti NSData vengono creati e hanno il contenuto corretto. Tuttavia, quando isEqualtoData è chiamata, ottengo un errore:

[NSConcreteData isEqualtoData:]: unrecognized selector sent to instance (instance refers to tmp2)

Ho anche l'avvertimento

Instance method '-isEqualtoData:' not found (return type defaults to 'id')

che non capisco come è chiaro che questo è un metodo valido nella documentazione. Devo dichiarare NSData.h da qualche parte?

-(BOOL)checkHeader{ 
    char tmp[3]; 
    [receivedStream getBytes:&tmp length:3]; 
    NSData *temp = [NSData dataWithBytes:tmp length:3]; 
    NSData *tmp2 = [NSData dataWithBytes:header length:3]; 
    BOOL test = [tmp2 isEqualtoData:temp]; 
    return test; 
} 
+0

Basta modificare il post, amico. Ho fatto un copia e incolla del tuo codice e mi ci sono voluti 10 minuti per capire cosa c'era di sbagliato xD – falkon21

risposta

29

Il metodo è denominato isEqualToData:. Nota la T maiuscola - L'obiettivo-C è sensibile al maiuscolo/minuscolo, come la maggior parte dei linguaggi di programmazione.

+0

Sapevo che sarebbe stato qualcosa di stupido in quel modo. Grazie. Questo mi insegnerà a copiare il metodo direttamente dai documenti. –

+8

Oppure utilizzare il completamento automatico. :) – Ciryon