-2

現在の日付と plist の日付の 2 つの日付を比較したいと考えています。私のplistの現在の日付と日付が等しい場合、何かを表示したいと思います。出来ますか?

plist の階層は Array->Dictionary-> (オブジェクトは 1 つの配列と見なされる連絡先であり、キーはすべてのオブジェクトで同じでなければならず、文字列です) です。キーを現在の日付と比較したい。

4

2 に答える 2

2

以下のコードを使用できます。

NSString *path = [[NSBundle mainBundle] pathForResource:@"EventAddress" ofType:@"plist"]; 
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];

NSArray* allmyKeys = [myDictionary  allValues];
NSLog(@"%@", allmyKeys);
NSLog(@"%@", [[allmyKeys objectAtIndex:0] objectAtIndex:0]);

plis から日付を取得するには、plist の日付に次のようなものが含まれている必要があります。

<date>2011-12-13T00:00:00Z</date>

NSDictionary の使用から日付を取得するには:

NSDate *eventDate = [myDictionary objectForKey:@"date"];

2 つの日付の使用を比較するには:

switch ([[NSDate date] compare:eventDate]){
 case NSOrderedAscending:
      NSLog(@"NSOrderedAscending");
break;
case NSOrderedSame:
      NSLog(@"NSOrderedSame");
break;
case NSOrderedDescending:
     NSLog(@"NSOrderedDescending");
break;
}
于 2013-03-16T05:08:52.677 に答える
0

これを満たすために、「plistの階層は配列->辞書->(オブジェクトは1つの配列と見なされる連絡先であり、キーはすべてのオブジェクトで同じでなければならず、文字列です)。キーを現在の日付"、以下の手順に従う必要があります

  1. .plist ファイルからすべての配列を取得する
  2. その現在の配列オブジェクト内のすべての辞書を取得します
  3. その現在の Dictionaries オブジェクト内のすべてのキーを取得します
  4. を使用してキーと現在の日付を比較しますNSComparisonResult

    NSDate *date1 = < YOUR CURRENT DATE HERE > ;
    NSString *plistFilePath  = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"SyncAuditMainScreen.plist"];
    
    NSArray *array = [NSArray arrayWithContentsOfFile:plistFilePath];
    for(int i=0;i<[array count];i++)
    {
        NSMutableDictionary *details=[array objectAtIndex:i];
        NSArray *allmyKeys = [details allKeys];
        for(NSString *key in allmyKeys)
        {
            NSLog(@"KEY: %@",key);
            NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
            [formatter setDateFormat:< YOUR FORMAT OF DATE >];
            NSDate *date2 = [formatter dateFromString:key];
            NSComparisonResult result = [date1 compare:date2];
            if(result==NSOrderedSame)
                NSLog(@"Key and current date are same");
        }
    }
    
于 2013-03-16T05:35:36.973 に答える