Как объединить два ключевых значения в словаре массива в Objective C - PullRequest
0 голосов
/ 09 октября 2018

У меня есть несколько объектов словаря в массиве.Теперь в конкретном словаре у меня есть два ключа «категория» и «созданная дата» от другого ключа.

Ситуация: - Мне нужен массив, содержащий объекты таким образом, чтобы категория, имеющая одинаковую дату, могла быть объединена в одну и образовать объект.И те, у которых другая дата, - это другой объект сам.

У меня в голове возникает ситуация, когда мне приходится ставить различные условия сравнения между ключами, базовый подход к этому.--- Не требуется

Нужно ваше ценное предложение для другого подхода, который необходим, также не является сложным.Заранее спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

вот вам пример,

NSDateFormatter * df = [NSDateFormatter new];
for (id object in self.mainArray) {
    [df setDateFormat:@"MM/dd/yyyy"];
    NSString *dateString = [df stringFromDate:[object objectForKey:@"createdDate"]];
    NSMutableArray *sectionArray = self.totalsSectionDictionary[dateString];
    if (!sectionArray) {
        sectionArray = [NSMutableArray array];
        self.totalsSectionDictionary[dateString] = sectionArray;
    }
    NSString * tempString = [object valueForKey:@"category"]
    [sectionArray addObject:@{@"value" : tempString}];
}

, в результате чего получается словарь объектов, объединенных датой в виде строкового значения, и внутри каждого из этих ключей даты находится массив значений для этой даты.Оттуда вам нужно вычленить эти значения и отсортировать их так:

NSArray * tempUnsortedArray = [self.totalsSectionDictionary allKeys];
NSArray *arrKeys = [tempUnsortedArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"MM/dd/yyyy"];
    NSDate *d1 = [df dateFromString:(NSString*) obj1];
    NSDate *d2 = [df dateFromString:(NSString*) obj2];
    return [d2 compare: d1];
}];
NSMutableArray * tempArray1 = [NSMutableArray array];
for (NSInteger i = 0; i < arrKeys.count; i++) {
    NSMutableArray *sectionArray = self.totalsSectionDictionary[arrKeys[i]];
}

там, где вы идете, последний цикл for позволит вам перебирать каждый массив разделов, сохраненный в исходном словаре по дате, такВы можете поместить их в коллекцию или таблицу

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...