2

コア データにいくつかのエンティティがあり、それらはすべて NSDate 属性を持つスーパー クラスのサブクラスです。

保存すると、他のすべてが正常に機能します。

しかし、それらの1つは、保存すると確率的にクラッシュするように見えます。

その理由は、スーパークラスから継承された NSDate 属性に関するものであることがわかりました。

NSDate 属性の日付値を設定すると、クラッシュしてログアウトします。

2012-02-10 00:24:34.474 EasyWallet[37772:707] -[__NSDate managedObjectContext]: unrecognized 
selector sent to instance 0xdc54c30
2012-02-10 00:24:34.483 EasyWallet[37772:707] *** Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: '-[__NSDate managedObjectContext]: unrecognized 
selector sent to instance 0xdc54c30'
*** First throw call stack:
(0x344268bf 0x346761e5 0x34429acb 0x34428945 0x34383680 0x32f8811b 0x32f8904b 0x32f8aeb5   
0x32f83161 0x32f7e8cf 0x3c507 0x34380435 0x377ea9eb 0x377ea9a7 0x377ea985 0x377ea6f5 
0x377eb02d 0x377e950f 0x377e8f01 0x377cf4ed 0x377ced2d 0x30c01df3 0x343fa553 0x343fa4f5 
0x343f9343 0x3437c4dd 0x3437c3a5 0x30c00fcd 0x377fd743 0x29b1 0x2970)
terminate called throwing an exception(gdb) 

これらの属性を保存するための私のコードは次のとおりです

... // get keys
 self.rowKeys = [NSMutableArray arrayWithObjects:@"personName",@"amount",@"incomingAccount",
                    @"date",@"returnDate",@"isReturned",@"memo",nil];
... // saving
for (int i = 0; i < [self.rowKeys count]; i++) {
    NSLog(@"%d: %@",i,[rowValues valueForKey:key(i)]);
    [newMo setValue:[self.rowValues valueForKey:key(i)] forKey:key(i)];
}

ここでの key(i) はマクロ定義です:

#define key(X) [rowKeys objectAtIndex:(X)]

日付はこのように印刷されましたが、当然のことです。

2012-02-10 16:00:00 +0000

「日付」属性を保存するとクラッシュしますが、通過する回数は少なくなります。

UIDatePicker からその日付を取得しました。コードをチェックしたところ、問題はないと思います。

本当に助けが必要です!

どうもありがとう!

4

1 に答える 1

2

私はそれを修正しました。

問題は、非常に秘密の場所で、NSDate メソッドを非 NSDate オブジェクトに送信するというばかげた間違いを犯したことです。

コード、特に紛らわしい部分に注意してください。

于 2012-02-13T04:29:27.987 に答える