因未捕获的异常'NSInvalidArgumentException'而终止应用程序 - 无法识别的选择器

时间:2013-04-13 10:39:21

标签: objective-c unrecognized-selector

我正在尝试创建一个简单的笔记应用。当我运行项目时,在调试区域中,它表示 ;

[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的新手。 感谢您的帮助

4 个答案:

答案 0 :(得分:4)

我建议您在Xcode中为所有例外添加断点。

enter image description here

答案 1 :(得分:0)

听起来您正在调用未在类createEditableCopyOfDatabaseIfNeeded中定义的方法TableViewController。您可以使用断点选项卡并添加新断点(加上按钮)并选择一个checkamrk来保留所有异常或类似的东西。这应该可以帮助您跟踪应用崩溃的位置。

哪个类正在实施createEditableCopyOfDatabaseIfNeeded方法?

答案 2 :(得分:0)

错误确实为您提供了此案例中所需的所有信息。您已定义函数,但它不在TableViewController类中。您应该编辑代码以在其存在的类中调用它。

答案 3 :(得分:0)

由于您已将函数定义为 - (void),因此应通过TableViewController的实例调用它,而不是以“静态”方式调用[TableViewController createEditableCopyOfDatabasteIfNeeded]