Почему я получаю исключение NSInvalidArgument? - PullRequest
0 голосов
/ 08 ноября 2011

Я смотрю на это часами, но не могу понять, в чем дело. Я пытаюсь обновить объекты с помощью основных данных после нажатия кнопки.

В документации Apple говорится, что: этот метод вызывает NSInvalidArgumentException, если aSelector имеет значение NULL.

Я не понимаю, как aSelector имеет значение Null, было бы полезно, если бы кто-то мог указать, что мне не хватает.

-(void)updatePaymentFields:(NSString*) aValue {
NSLog(@"I'm inside Update Payment Fields");
[self setValue:aValue forKey:@"amountPaid"];
}

Это метод нажатия кнопки, который должен вызывать вышеупомянутый updatePaymentFields: метод

- (IBAction)saleCompleteButtonTapped:(id)sender {
Invoice_MarketAppDelegate* delegate = [[UIApplication sharedApplication] delegate];

NSManagedObjectContext* managedObjectContext = delegate.managedObjectContext;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Invoice"     inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"invoiceNumber == %@", invoiceNumberLabel.text];
NSLog(@"predicate is: %@",predicate);
[fetchRequest setPredicate:predicate];

NSLog(@"I'm inside saleCompleteButtonTapped");
NSError* error;
NSMutableArray *mutableFetchResults = [[[managedObjectContext executeFetchRequest:fetchRequest error:&error]mutableCopy ]autorelease];
NSLog(@"array:%@",mutableFetchResults);
NSLog(@"%@",amountPaidStr);
[mutableFetchResults makeObjectsPerformSelector:@selector(updatePaymentFields:) withObject:amountPaidStr];
}

Это вывод журнала

2011-11-08 17:14:45.708 Market[521:fb03] I'm inside saleCompleteButtonTapped
2011-11-08 17:14:45.867 Market[521:fb03] array:(
"<Invoice: 0x8142340> (entity: Invoice; id: 0x8140f90 <x-coredata://AF2BBB5C-4135-45EB-A421-5036AE02D2A0/Invoice/p1> ; data: {\n    GSTAmount = 1;\n    amountPaid = nil;\n    cardID = 0;\n    customer = \"\";\n    date = \"07/11/2011\";\n    incTaxPrice = 11;\n    incTaxTotal = 110;\n    invoiceNumber = a1;\n    itemCode = 1035;\n    paymentMethod = nil;\n    price = \"10.00\";\n    quantity = \"10.00\";\n    saleStatus = I;\n    taxCode = GST;\n    timeStamp = \"2011-11-06 17:22:04 +0000\";\n    total = 100;\n})"
)
2011-11-08 17:14:45.869 Market[521:fb03] 110.00
2011-11-08 17:14:45.870 Market[521:fb03] -[Invoice updatePaymentFields:]: unrecognized selector sent to instance 0x8142340
2011-11-08 17:14:45.894 Market[521:fb03] *** Terminating app due to uncaught exception   'NSInvalidArgumentException', reason: '-[Invoice updatePaymentFields:]: unrecognized selector   sent to instance 0x8142340'
*** First throw call stack:
 (0x1549052 0x1afdd0a 0x154aced 0x14aff00 0x14afce2 0x154ae72 0x14a6c78 0xa980 0xaa49  0x154aec9 0x4995c2 0x49955a 0x53eb76 0x53f03f 0x53e2fe 0x4bea30 0x4bec56 0x4a5384 0x498aa9 0x2436fa9 0x151d1c5 0x1482022 0x148090a 0x147fdb4 0x147fccb 0x2435879 0x243593e 0x496a9b 0x1d6d 0x1ce5)

Я подозреваю, что у меня должен быть код внутри метода

 - (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)anObject {
 NSLog(@"I'm inside the makeObjectsPerformSelector");
 }

Но я тогда не знаю, как вызвать это внутри моей кнопки. Нажатие метода. Я не могу просто сделать

[self makeObjectsPerformSelector:withObject:];

Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 08 ноября 2011

Похоже, у вашего Invoice класса нет метода экземпляра updatePaymentFields:. Вы уверены, что поместили этот метод в правильный класс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...