首页 > 解决方案 > 如何在Objective C中组合数组字典中的两个键值

问题描述

我在数组中有多个字典对象。现在,特别是字典,我有两个键“类别”和“createdDate”来自另一个键。

情况: - 我需要一个包含对象的数组,使得具有相同日期的类别可以组合在一起并形成一个对象。那些具有不同日期的类别是它自己的另一个对象。

我有一种情况,我必须在键之间放置各种比较条件,这是这样做的基本方法。--- 不需要

需要您对不同方法的宝贵建议,这是必需的,也不复杂。提前致谢。

标签: objective-c

解决方案


给你一个例子

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 循环将允许您按日期遍历存储在原始字典中的每个部分数组,以便您可以将它们放入集合或表格视图中

祝你好运


推荐阅读