2013-04-13 28 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',如果你沒有捕獲到被稱爲'未捕獲的異常'的異常並且會終止你的應用程序,它就會結束退出。按照Epatel的回答說,這個例外本身就是真正的中斷。 – Popeye

回答

0

這聽起來像你撥打的未TableViewController類中定義的方法createEditableCopyOfDatabaseIfNeeded。你可以到斷點選項卡並添加新的斷點(加上按鈕),並選擇一個checkamrk來保存所有異常或類似的東西。這應該可以幫助你跟蹤你的應用崩潰的位置。

什麼類實現createEditableCopyOfDatabaseIfNeeded方法?

+0

TableViewController.m – user2277163

+0

1)只要做他的圖片中提到的@epatel,添加一個「所有異常」斷點和(希望),這將使你能夠看到真正的異常發生在哪裏(main只是你的應用程序中斷的地方) 2)過去你的整個TableViewController.m文件,所以我們可以看到它 3)你在TableViewController.h頭文件中聲明瞭createEditableCopyOfDatabaseIfNeeded嗎? – paxx

0

在這種情況下,錯誤確實爲您提供了所有需要的信息。您定義了該函數,但它不在TableViewController類中。你應該編輯你的代碼,在它存在的類中調用它。

0

既然你已經定義的功能 - (無效),你應該把它通過TableViewController一個實例,而不是在「靜態」方式[TableViewController createEditableCopyOfDatabasteIfNeeded]

4

我建議你也Xcode中添加一個斷點所有異常。

enter image description here

相關問題