2010-10-21 9 views
0

Je frappe un mur encore et encore, essayant de résoudre un problème que j'ai dans xcode. Je suis un débutant et j'ai commencé à coder il y a quelques temps.iPhone SDK NSInternalInconsistencyException

Je suis en train de faire un analyseur XML basé sur ce tutoriel: http://cocoadevblog.com/iphone-tutorial-creating-a-rss-feed-reader

qui fonctionne très bien séparément, mais quand je suis mise en œuvre dans mon propre projet, je reçois l'erreur « NSInternalInconsistencyException », comme résultat du code ci-dessous:

----File: Parser.m---- 

- (void)parserDidEndDocument:(NSXMLParser *)parser { 
if ([_delegate respondsToSelector:@selector(parsedInformation::)]){ 
    [_delegate parsedInformation:information]; 
}else{ 
     [NSException raise:NSInternalInconsistencyException 
    format:@"Delegate (%d) doesn't respond to parsedInformation:", _delegate]; 
    } 
} 

J'ai essayé d'enlever la phrase si, et il appelle la fonction correcte, mais les données qui est censé être overhanded, ne passera pas.

configuration du projet

Le projet est une application à onglets. Je vais avoir trois classes:

  • Parser
  • AlphaTab
  • RootDelegate

En RootDelegate j'ai utilisé le code suivant pour initialiser l'onglet vue, puis initialiaze la AlphaTab comme tableView faisant partie d'une navigationView:

----RootDelegate.m ---- 

    tabBarController = [[UITabBarController alloc] init]; 
alphaTab = [[AlphaTab alloc] initWithTabTitle:@"AlphaTab" navigationTitle:@"Exploring"]; 

UINavigationController *tableNavController = [[[UINavigationController alloc] initWithRootViewController:alphaTab] autorelease]; 
    tableNavController.delegate = self; 
    [alphaTab release]; // creates your table view's navigation controller, then adds the created view controller. Note I then let go of the view controller as the navigation controller now holds onto it for me. This saves memory. 

donc bien à ce jour .. le problème vient quand je les utilise Pars er classe, qui analyse un fichier XML donné. Cette classe est initialisée et implémentée uniquement dans l'AlphaTab - elle n'a donc rien à voir avec la classe RootDelegate. L'initialisation se fait comme:

----File AlphaTab.m ---- 

- (void)loadData{ 
    if(information==nil){ 
    Parser *XMLParser = [[Parser alloc] init]; 
    [XMLParser parseFeed:@"http://frederikbrinck.com/bodil/Example.xml" withDelegate:self]; 
    [XMLParser release]; 
    }else { 
    [self.tableView reloadData]; 
    } 

} 

Je soupçonnant le paramètre valeur withDelegate « soi-même » être le problème, que je pense referres à la RootDelegate super classe, mais je ne suis pas sûr. De même, je ne sais pas comment passer le délégué de la classe AlphaTab à la fonction, ce qui, je pense, résoudrait le problème.

Je suis doit penser que le problème pourrait être créé à partir de cette aswell ligne:

----FILE: Parser.h ---- 

@protocol AlphaTab <UITableViewDelegate> 
- (void)parsedInformation:(NSArray *)i; 
@end 

Je l'ai fait des recherches sur les protocoles et respondsToSelector, mais honnêtement, je ne comprenais pas grand-chose, puisque mon code est vu du point de vue de la programmation, sans utiliser l'InterfaceBuilder, puisque cela m'a été conseillé. Cela n'a pas non plus conduit à la solution du problème.

Pour mieux comprendre, je veux que cette fonction dans AlphaTab.m soit appelée, lorsque l'information est analysée.

----FILE AlphaTab.m ---- 

- (void)parsedInformation:(NSArray *)i { 
    NSLog(@"The parser has completed parsing"); 
    information = i; 
    NSLog(@"This is the information: %d", [[information objectAtIndex:0] objectForKey:@"tabTitle"]); 
    [self.tableView reloadData]; 
    } 

Je l'ai regardé sur le net, et j'ai trouvé quelques explications sur le NSInternalInconsistencyException. J'ai essayé de les faire aussi, par exemple en mettant tout le monde avec eux-mêmes en tant que délégués. Cependant, je n'ai pas eu de chance. Ce qui me surprend le plus, c'est que lorsque j'utilise l'analyseur sans avoir à sous-classer son appelant (ce cas: AlphaTab) dans une classe principale, cela fonctionne comme un charme.

J'espère que vous pouvez me donner un indice. Si vous avez besoin de plus d'informations s'il vous plaît demander, et je serai en disposition.

// Brinck10

+0

Il semblerait que vous ayez un signe deux-points supplémentaire dans votre nom de sélection. – warrenm

+0

Merci! J'ai découvert: D! –

Répondre

0

S'il vous plaît voir @warrenm et son commentaire.