NSMutableArrayのNSMutableDictionairesとNSDate値の比較

NSArray内のNSDictionairesをソートするために、コード内で NSArray * toWrite = [[items sortedArrayUsingFunction:comparator context:nil] copy]; を使用しています。

比較するためのC関数は次のとおりです。

static NSComparisonResult comparator( NSDictionary *d1, NSDictionary *d2, void *context )
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"EEE, dd/MM/yyyy"];
    NSDate *date1 = [dateFormatter dateFromString:[d1 objectForKey:@"date"]];
    NSDate *date2 = [dateFormatter dateFromString: [d2 objectForKey: @"dateString"]];
    NSLog(@"date1:%@",[dateFormatter stringFromDate:date1]);
    NSLog(@"date2:%@",[dateFormatter stringFromDate:date2]);
    [dateFormatter release];
    NSLog(@"COMPARE:%d",[date1  compare:date2]);
    return [date1  compare:date2];
}

NSArrayで3つのNSDictionariesを持つAppを実行すると、次のようになります。

date1:Thu, 17/11/2011
date2:(null)
COMPARE:0
date1:Sat, 19/11/2011
date2:(null)
COMPARE:0

ちなみに、私の.plistファイルからNSDictionaryを1つ作成する方法は次のとおりです。


    date
    Thu, 17/11/2011
    duration
    120 min
    location
    BA708
    notes
    10 min reading time
    seat
    14
    time
    09:00
    unitName
    ROBOT SYSTEMS DESIGN

0

1 答え

あるキーには「日付」を使用し、もう一方のキーには「日付文字列」を使用しています。

NSDate *date1 = [dateFormatter dateFromString:[d1 objectForKey:@"date"]];
NSDate *date2 = [dateFormatter dateFromString: [d2 objectForKey: @"dateString"]];

あなたが示すplistの例によれば、キーは「日付」です。あなたがリンゴとリンゴを比較していると仮定すると、それでdate2が常にnullになるのです。

1
追加された
うわー..あなたは正しいです、これは愚かな間違いです。私は一晩中コードを調べて過ごしました。
追加された 著者 Kex,
私もそこにいました。
追加された 著者 Wienke,