1

これが私のコードです:

for (NSManagedObject *object in array) {
    if ([[object valueForKey:@"DueDate"] isLessThan:[NSDate date]]) {
        count++;
        NSLog(@"Looped");
        NSString *test = [[NSString alloc] initWithFormat:@"%@", [object valueForKey:@"DueDate"]];
        NSLog(@"%@", test);
    }
}
NSLog(@"%i", count);
NSDockTile *aTitle = [[NSApplication sharedApplication] dockTile];
[aTitle setBadgeLabel:[NSString stringWithFormat:@"%i", count]];

何らかの理由で、このコードは 2 であるべきところにドック アイコンに 8 を追加しています。

4

1 に答える 1

4

2であると主張する根拠は何ですか?配列には明らかに、期日が現在の日付よりも前の 8 つのオブジェクトがあります (ループのたびに新しいオブジェクトを作成します)。

DueDateこれらの管理対象オブジェクトのプロパティの値のクラスは? (これについてはモデルを調べないでください。期日値classメッセージを送信し、 を使用して結果をログに記録してNSLogください。) それらが NSDates ではcompare:なく、メソッドがNSDates である可能性があります。 NSDate、ナンセンスを返すだけです。

さらに、これらのオブジェクトを取得するために使用しているフェッチ リクエストの述語として、この is-less-than-X-date テストを含めてみませんか? 次に (期日の値が NSDates であることを確認した後)、単純countに配列の を使用できます。もちろん、あなたが示したコードの外で、より大きな結果配列で何か他のことをしていないと仮定しています。

于 2009-12-12T05:52:01.770 に答える