Сравните строки в NSDictionary - PullRequest
1 голос
/ 27 марта 2012

У меня есть NSDictionary, отформатированный из plist:

    <plist version="1.0">
<dict>
    <key>Contents</key>
        <array>
            <dict>
                <key>date</key>
                <string>20110323</string>
                <key>name</key>
                <string>update.zip</string>
                <key>url</key>
                <string>http://intranet.webaddress.com/mobile/ipad/</string>
            </dict>
            <dict>
                <key>date</key>
                <string>20120323</string>
                <key>name</key>
                <string>plns.galleryy.zip</string>
                <key>url</key>
                <string>http://intranet.webaddress.com/mobile/ipad/</string>
            </dict>
        </array>
</dict>
</plist>

Мне нужно зациклить NSDictionary и получить любые значения имени, у которых строка даты больше, чем я предоставляю.Таким образом, псевдокод (хотя и работает) будет выглядеть так:

NSMutableArray *urls = [NSMutableArray arrayWithCapacity:1];

NSMutableDictionary *capabilities;
capabilities = [[myData libraryDictionary] valueForKey:@"Contents"];

for (int i=0; i<[myData libraryCount]; i++) {
    NSString *value = [[capabilities valueForKey:@"date"] objectAtIndex:i];

    if ([value compare: @"20120323"] == NSOrderedSame)
    {
        NSLog(@"Equal");
        NSLog(@"%@",value);
        NSString *saveValue = [[capabilities valueForKey:@"name"] objectAtIndex:i];
        [urls addObject:saveValue];
        NSLog(@"%@",saveValue);
    }
    else 
    {
        NSLog(@"Not Equal");
    }
}

Тогда я буду загружать только те файлы, у которых есть дата, которая предшествует дате, которую я предоставил.В этом простом примере я бы только добавил plns.galleryy.zip в свой изменяемый массив.

Может кто-нибудь помочь мне с этой проблемой?Вышеуказанное работает, но это лучший способ?

Примечание: [myData libraryDictionary] - мой словарь, и он отлично читает для других целей.

Большое спасибо

1 Ответ

0 голосов
/ 28 марта 2012

Вам нужно создать NSDate из строки даты:

NSDateFormatter *format = [NSDateFormatter new];
[format setDateFormat:@"YYYYMMDD"];

foreach (NSString *dateStr in dictionary)
{
    NSDate *date = [format dateFromString:dateStr];

    if ([date compare:compareDate] >= 0)
    {
        // download the new file
    }
}
...