Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 由于未捕获异常而终止应用程序';NSInvalidArgumentException';-无法识别的选择器_Objective C_Unrecognized Selector - Fatal编程技术网

Objective c 由于未捕获异常而终止应用程序';NSInvalidArgumentException';-无法识别的选择器

Objective c 由于未捕获异常而终止应用程序';NSInvalidArgumentException';-无法识别的选择器,objective-c,unrecognized-selector,Objective C,Unrecognized Selector,我正在尝试制作一个简单的notes应用程序。当我运行项目时,在调试区域,它显示 [1752:19d03] -[TableViewController createEditableCopyOfDatabasteIfNeeded]: unrecognized selector sent to instance 0xa147d20 [1752:19d03] *** Terminating app due to uncaught exception 'NSInvalidArgumentExceptio

我正在尝试制作一个简单的notes应用程序。当我运行项目时,在调试区域,它显示

[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'
而我的代码,包括CreateEditableCopyOfDataBasteIfNeed,是

- (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还不熟悉。
感谢您的帮助

听起来您正在调用类
TableViewController
中未定义的方法
createEditableCopyOfDatabaseIfNeeded
。您可以进入“断点”选项卡并添加新的断点(加号按钮),然后选择一个复选标记以保留所有异常或类似的内容。这将帮助您跟踪应用程序崩溃的位置


哪个类正在实现
createEditableCopyOfDatabaseIfNeeded
方法?

听起来您在调用未在类
TableViewController
中定义的方法
createEditableCopyOfDatabaseIfNeeded
。您可以进入“断点”选项卡并添加新的断点(加号按钮),然后选择一个复选标记以保留所有异常或类似的内容。这将帮助您跟踪应用程序崩溃的位置


哪个类正在实现
createEditableCopyOfDatabaseIfNeeded
方法?

在这种情况下,该错误确实提供了所需的所有信息。您已经定义了函数,但它不在TableViewController类中。您应该编辑代码,以便在它确实存在的类中调用它

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

既然将函数定义为-(void),那么应该通过
TableViewController的实例调用它,而不是以“静态”方式
[TableViewController CreateEditableCopyOfDatabaseTeifneed]

既然将函数定义为-(void)您应该通过
TableViewController
的实例调用它,而不是以“静态”方式
[TableViewController createEditableCopyOfDatabaseDefended]
我建议您也在Xcode中为所有异常添加断点


我建议您也在Xcode中为所有异常添加一个断点


1)按照@epatel在其图片中的建议,添加一个“所有异常”断点(希望如此),这将使您能够看到真正异常发生的地方(main只是您的应用程序中断的地方)2)通过整个TableViewController.m文件,以便我们可以看到它3)您是否在TableViewController.h标头中声明createEditableCopyOfDatabaseIfNeeded?1)只需按照@epatel在其图像中的建议执行,添加一个“所有异常”断点,(希望)这将使您能够看到真正异常发生的位置(main只是一个应用程序中断的地方)2)3)您是否在TableViewController.h标头中声明createEditableCopyOfDatabaseIfNeeded?问题的第一个是
无法识别的选择器
这是因为您试图在
UITableView上调用名为
createEditableCopyOfDatabaseIfNeeded
的方法它不知道它是什么。如果需要,您在哪里调用
CreateEditableCopyOfDatabaseIf
?第二,你不需要显示
main.m
如果你没有捕获到异常,它将在这里结束退出,这被称为
未捕获异常
,并将终止你的应用程序。按照
Epatel
的回答执行异常本身的实际中断。首先,您的问题是
无法识别的选择器
,这是因为您试图在
UITableView
上调用名为
createEditableCopyOfDatabaseIfNeeded
的方法,而它不知道它是什么。如果需要,您在哪里调用
CreateEditableCopyOfDatabaseIf
?第二,你不需要显示
main.m
如果你没有捕获到异常,它将在这里结束退出,这被称为
未捕获异常
,并将终止你的应用程序。按照
Epatel
回答中对异常本身的实际中断进行操作。