2013-04-13 2 views
0

Я пытаюсь создать простую заметку. Когда я запускаю проект, в области отладки он говорит;Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException» - непризнанный селектор

[1752:19d03] -[TableViewController createEditableCopyOfDatabasteIfNeeded]: unrecognized selector sent to instance 0xa147d20 

[1752:19d03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TableViewController createEditableCopyOfDatabasteIfNeeded]: unrecognized selector sent to instance 0xa147d20' 

И мой код, включает в себя createEditableCopyOfDatabasteIfNeeded, является;

- (void)createEditableCopyOfDatabaseIfNeeded { 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *documentDirectory = [self applicationDocumentsDirectory]; 
    NSString *writableDBPath = [documentDirectory stringByAppendingPathComponent:@"NotesList.plist"]; 

    BOOL dbexits = [fileManager fileExistsAtPath:writableDBPath]; 
    if (!dbexits) { 

     NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"NotesList.plist"]; 

     NSError *error; 
     BOOL success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; 
     if (!success) { 
      NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]); 
     } 
    } 
} 

Где находится проблема? Это может быть легко, но я новичок в Xcode. Спасибо за помощь

+0

Прежде ваш вопрос является 'непризнанным selector' это потому, что вы пытаетесь вызвать метод под названием' createEditableCopyOfDatabaseIfNeeded' на 'UITableView' и он не знает, что это такое. Где вы называете 'createEditableCopyOfDatabaseIfNeeded'? Во-вторых, вам не нужно показывать 'main.m', где он завершит выход, если вы не поймаете исключение, это называется« Uncaught Exception »и убьет ваше приложение. Сделайте так, как ответ «Epatel» говорит о фактическом прорыве самого исключения. – Popeye

ответ

0

Это звучит, как вы вызываете методы createEditableCopyOfDatabaseIfNeeded, которые не определены в классе TableViewController. Вы можете перейти на вкладку точек останова и добавить новую точку останова (плюс кнопка) и выбрать checkamrk для хранения всех исключений или чего-то подобного. Это поможет вам отслеживать, где ваше приложение рушится.

Какой класс внедряет метод createEditableCopyOfDatabaseIfNeeded?

+0

TableViewController.m – user2277163

+0

1) просто сделайте то, что предложил в своем образе @epatel, добавьте точку останова «Все исключения» и (надеюсь) это позволит вам увидеть, где происходит реальное исключение (главное - это просто место, где ваше приложение разбивается) 2) Прошел весь ваш файл TableViewController.m, чтобы мы могли его увидеть 3) Didi объявляете createEditableCopyOfDatabaseIfNeeded в заголовке TableViewController.h? – paxx

0

Ошибка дает вам всю необходимую информацию в этом случае. У вас определенная функция, но она отсутствует в классе TableViewController. Вы должны отредактировать свой код, чтобы вызвать его в классе, в котором он существует.

0

Поскольку вы определили функцию как - (пустота), вы должны вызвать его через экземпляр TableViewController, а не в «статическом» способе [TableViewController createEditableCopyOfDatabasteIfNeeded]

4

Я предлагаю вам также добавить точку останова в Xcode для всех исключений ,

enter image description here