2011-11-08 22 views
0

私はこれを何時間も見てきましたが、何が間違っているかを知ることはできません。 ボタンを押すと、コアデータを使用してオブジェクトを更新しようとしています。なぜNSInvalidArgument例外が発生しますか?

アップルのマニュアルでは次のように述べています。aSelectorがNULLの場合、このメソッドはNSInvalidArgumentExceptionを発生させます。

aSelectorがNullである方法がわかりません。誰かが私に欠けているものを指摘できるかどうかはわかります。

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

この

は、これは私が私がメソッド内のコードを持つべきであると思われるログ出力

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) 

である上記​​方法

- (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]; 
} 

を呼び出す必要があり、ボタンを押す方法であり、

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

しかし、私はその後、私のbuttonPressedMethod内にこれをコールする方法がわからない、私は単純に任意のヘルプをいただければ幸いです

[self makeObjectsPerformSelector:withObject:]; 

行うことはできません。ありがとう

答えて

0

Invoiceクラスにインスタンスメソッド​​がないようです。あなたはそのクラスを正しいクラスに入れてもよろしいですか?

+0

ありがとう、私は間違った場所にインスタンスメソッドを持っていたので、私は最初のビューコントローラでそれを持っていました。そのエラーは消えましたが、変更は自分のデータベースに伝播しません。なぜそれが起こるかもしれないのか?私はNSLogをaValueで行いました。値が与えられています – msec

+0

実際は無視して、後で保存する必要がありました!ありがとうございます:) – msec

関連する問題