Я не использовал интерфейс Builder, чтобы добавить этот TableViewController в новый iOS-разработчик, поэтому, возможно, пропустил очень простую точку. Когда я нажимаю кнопку cancel_Clicked, это отклоняет представление должным образом без ошибок, но когда я нажимаю кнопку save_Clicked, я получаю следующую ошибку.Кнопка «Сохранить». Нажмите «« Непризнанный селектор, отправленный экземпляру »
Я искал всюду по SO и не нашел простого объяснения того, что может вызвать эту ошибку и еще не разрешило ее. Любое направление было бы высоко оценено.
#import "SettingsViewController.h"
#import "Category.h"
#import "Subject.h"
#import "QuotesAppDelegate.h"
@implementation SettingsViewController
@synthesize subjects, categories, selectedSubject, selectedCategory, selectedTabs;
static NSString *kCellIdentifier = @"MyIdentifier";
...
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self action:@selector(cancel_Clicked:)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self action:@selector(save_Clicked:)];
...
- (void) cancel_Clicked:(id)sender {
//Dismiss the controller.
[self.navigationController dismissViewControllerAnimated:YES completion: nil];
}
- (void) save_Clicked:(id)sender {
for (Subject *s in selectedTabs){
//NSLog(@"Set selected subject %@ to %ld", s.title, (long)s.active);
//UPDATE THE ACTIVE STATUS ON THE SELECTED SUBJECTS
[s setActiveStatus:s.active];
//UPDATE ARRAY
for (Subject *sub in self.subjects){
if (sub.subject_id == s.subject_id){
[sub setActive:s.active];
}
}
}
//RELOAD WHOLE DATABASE
QuotesAppDelegate *appDelegate = (QuotesAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate populateFromDatabase];
self.categories = [appDelegate activeCategories];
self.subjects = [appDelegate activeSubjects];
[self.tableView reloadData];
[self.navigationController dismissViewControllerAnimated:YES completion: nil];
}
Вот трассировки стека:
2015-11-13 17:19:09.763 Quotes[44015:2536500] -[NSIndexPath active]: unrecognized selector sent to instance 0xc000000000000016
2015-11-13 17:19:09.841 Quotes[44015:2536500] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSIndexPath active]: unrecognized selector sent to instance 0xc000000000000016'
*** First throw call stack:
(
0 CoreFoundation 0x000000010843ef45 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000107eb8deb objc_exception_throw + 48
2 CoreFoundation 0x000000010844756d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3 CoreFoundation 0x0000000108394eea ___forwarding___ + 970
4 CoreFoundation 0x0000000108394a98 _CF_forwarding_prep_0 + 120
5 Quotes 0x0000000105d364b8 -[SettingsViewController save_Clicked:] + 376
6 UIKit 0x000000010678ae91 -[UIApplication sendAction:to:from:forEvent:] + 92
7 UIKit 0x0000000106b87393 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 152
8 UIKit 0x000000010678ae91 -[UIApplication sendAction:to:from:forEvent:] + 92
9 UIKit 0x00000001068f64d8 -[UIControl sendAction:to:forEvent:] + 67
10 UIKit 0x00000001068f67a4 -[UIControl _sendActionsForEvents:withEvent:] + 311
11 UIKit 0x00000001068f691f -[UIControl _sendActionsForEvents:withEvent:] + 690
12 UIKit 0x00000001068f58d4 -[UIControl touchesEnded:withEvent:] + 601
13 UIKit 0x00000001067f8ed1 -[UIWindow _sendTouchesForEvent:] + 835
14 UIKit 0x00000001067f9c06 -[UIWindow sendEvent:] + 865
15 UIKit 0x00000001067a92fa -[UIApplication sendEvent:] + 263
16 UIKit 0x0000000106783abf _UIApplicationHandleEventQueue + 6844
17 CoreFoundation 0x000000010836b011 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
18 CoreFoundation 0x0000000108360f3c __CFRunLoopDoSources0 + 556
19 CoreFoundation 0x00000001083603f3 __CFRunLoopRun + 867
20 CoreFoundation 0x000000010835fe08 CFRunLoopRunSpecific + 488
21 GraphicsServices 0x000000010a013ad2 GSEventRunModal + 161
22 UIKit 0x000000010678930d UIApplicationMain + 171
23 Quotes 0x0000000105cfbd9f main + 111
24 libdyld.dylib 0x00000001088ea92d start + 1
25 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
FYI - в будущем убедитесь, что вы сначала символизируете любой зарегистрированный журнал сбоев и указываете точную строку кода, вызывающую проблему. – rmaddy
Я не уверен, понимаю ли вы, что вы имеете в виду. Как вы символизируете журнал сбоев? – jroyce
Сделайте поиск. Вы найдете много информации. – rmaddy