Errore Di Progetto Di Costruzione Con NSXMLParserDelegate

TurbineXMLParser.h

#import <Foundation/Foundation.h>

@interface TurbineXMLParser : NSObject <NSXMLParserDelegate> {
...

TurbineXMLParser.m

#import "TurbineXMLParser.h"

Ho appena aggiunto una nuova classe per il mio attuale progetto che ho già testato in un unico file. Quando provo a compilare il progetto ricevo l’errore: errore: impossibile trovare il protocollo dichiarazione per ‘NSXMLParserDelegate’

Ho fatto un po ‘ di ricerca e provato ad aggiungere il seguente …

TurbineXMLParser.h

#import <Foundation/Foundation.h>

@protocol NSXMLParserDelegate;

@interface TurbineXMLParser : NSObject <NSXMLParserDelegate> {
...

ma ancora ricevere il messaggio di avviso: attenzione: non è una definizione di protocollo ‘NSXMLParserDelegate’

qualsiasi aiuto sarebbe molto apprezzato

.
.
.

EDIT_002:

Rimozione <NSXMLParserDelegate> da @interfaccia ha fatto il lavoro, ma io sono curioso di sapere come e perché, sono sempre mescolate & confuso? Ho avuto l’impressione che l’oggetto delegato deve adottare il NSXMLParserDelegate protocollo, cioè l’aggiunta di <NSXMLParserDelegate> dopo la superclasse.

Ho due casi in cui questo funziona in modo diverso, il primo è un progetto in un’unica riga di comando file dove Se non aggiungere <NSXMLParserDelegate> si avverte che:

class 'TestXMLParser' does not implement the 'NSXMLParserDelegate' protocol

La seconda istanza è dove ho il programma di installazione più *.h e *.m i file (una delle classi MyXMLParser.h, MyXMLParser.m) quando cerco di creare il progetto con <NSXMLParserDelegate> ottengo questo errore:

error: cannot find protocol declaration for 'NSXMLParserDelegate'

Rimuovere <NSXMLParserDelegate> e funziona tutto bene, nessun errore, nessun avviso…

gary

OriginaleL’autore fuzzygoat | 2010-03-23

4 Replies
  1. 6

    In avanti-dichiara NSXMLParserDelegate non è suscettibile di aiuto, ha bisogno di essere effettivamente importati se sei conforme ad esso.

    L’errore originale è quello che si otterrebbe se non hai collegato la Fondazione quadro nel progetto.

    Get-info il vostro obiettivo in XCode. Nella scheda Generale, verificare Fondazione.quadro è nell’elenco delle librerie collegate.

    @Protocollo è stato solo a me provare, ora mi rendo conto che il suo male. La Fondazione quadro non viene trovato è quello che ho pensato, probabilmente impostare un loop o perso completamente, molte grazie per l’heads-up.
    Che linea semplicemente in avanti-dichiara il protocollo, non definire come vuoto. Ma, naturalmente, il protocollo deve essere definito al punto che si è utilizzato.
    Ah, avevo totalmente dimenticato, si può inoltrare la dichiarazione di un protocollo, hai ragione. Editing per rimuovere la domanda su che linea.

    OriginaleL’autore Jeffrey Harris

  2. 5

    Non è necessario definire l’oggetto deve essere un NSXMLParserDelegate

    Basta assicurarsi di fare questo:

    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
    [parser setDelegate:self];

    E implementare i metodi in oggetto.

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
    Ho fatto esattamente come quello che ha detto u ma nel 3 ° delegato metodo, cioè parser: foundCharacters: ho null nella Stringa considerando che c’è qualche valore.
    Ho risolto il mio problema.
    Questo non compilare per me con una Base SDK 4.1. La compilazione non riesce a setDelegate con “Classe MyClass’ non implementare il ‘NSXMLParserDelegate ” protocollo”. Non riesco a trovare un modo per fare questa build su entrambi 3.2 e 4.1. Altri post consigliamo di utilizzare una versione minima del sistema operativo, ma voglio essere in grado di girare su vecchie ricevitore Sistemi operativi. stackoverflow.com/questions/2966475/…
    Ah, ho appena realizzato che il messaggio che ho citato è un avviso, non un errore. Ho Xcode “trattare gli avvisi come errori” costruire opzione è impostata, il che spiega perché sto vedendo l’errore.

    OriginaleL’autore Felix Khazin

  3. 2

    È bisogno di dire che è un NSXMLParserDelegate in SDK4.0. Ma quando mi aggiungi alla definizione dell’interfaccia, non è più compila sotto il 3.0, a soli 4.0.

    Sotto il 3.0 si dice che è impossibile trovare il protocollo def per NSXMLParserDelegate. Ho incluso:

    #import <Foundation/NSXMLParser.h>

    OriginaleL’autore stoutyhk

Lascia un commento