2010-10-21 3 views
0

Я ударяю о стену снова и снова, пытаясь решить проблему, которую я получил в xcode. Я новичок и начал кодирование совсем недавно.iPhone SDK NSInternalInconsistencyException

Я пытаюсь сделать XML-анализатор на основе этого урока: http://cocoadevblog.com/iphone-tutorial-creating-a-rss-feed-reader

который отлично работает отдельно, но когда я его реализации в мой собственный проект, я получаю ошибку «NSInternalInconsistencyException», как результат следующий код:

----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]; 
    } 
} 

Я пытался удалить, если-фразу, а затем вызывает правильную функцию, но данные, которые, как предполагается, overhanded, не достучаться.

Настройка проекта

Проект является вкладка-приложение. У меня три класса:

  • Parser
  • AlphaTab
  • RootDelegate

В RootDelegate я использовал следующий код для инициализации вкладки ракурс, а затем initialiaze в AlphaTab как Tableview будучи частью 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. 

так хорошо до сих пор .. проблема возникает, когда я использую Pars er, который анализирует данный XML-файл. Этот класс инициализируется и реализуется только в AlphaTab, поэтому он вообще не имеет отношения к классу RootDelegate. Инициализация выполняется как:

----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]; 
    } 

} 

Я заподозрить значение «я» параметр withDelegate, чтобы быть проблемы, которые я думаю, referres к суперкласса RootDelegate, но я не уверен. Аналогично, я не знаю, передать делегат класса AlphaTab функции, которая, я думаю, решит проблему.

Я должен думать, что эта проблема может быть создана из этой линии Aswell:

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

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

Я сделал некоторые исследования о протоколах и respondsToSelector, но если честно, я многого не понимаю, поскольку мой код видно из программной перспективы зрения, без использования InterfaceBuilder вообще, поскольку мне было рекомендовано это сделать. Это также не привело к решению проблемы.

Для дальнейшего понимания, я хочу, чтобы эта функция в AlphaTab.m вызывалась, когда информация анализируется.

----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]; 
    } 

Я посмотрел на сетку, и я нашел несколько экспликации о NSInternalInconsistencyException. Я тоже пытался их сделать, например, установив всех с собой в качестве делегатов. Однако мне не повезло. Что меня больше всего интересует, так это то, что, когда я использую Parser без подкласса, это вызывающий (этот случай: AlphaTab) в основной класс, он работает как шарм.

Надеюсь, вы, ребята, можете дать мне ключ. Если вам нужна дополнительная информация, спросите, и я буду в порядке.

// Brinck10

+0

Похоже, что у вас может быть дополнительный двоеточие в вашем имени селектора. – warrenm

+0

Спасибо! Я узнал: D! –

ответ

0

Пожалуйста, смотрите @warrenm и его комментарий.

Смежные вопросы