【问题标题】:Group NSDictionary by dates [duplicate]按日期分组 NSDictionary [重复]
【发布时间】:2014-03-09 21:35:38
【问题描述】:

我有一个 NSDictionary,我想将它分组,按日期创建一个对象数组

主 NSDictionary 示例:

({

        date = "2014-04-27";
        group = "yellow.png";
        length = 180;

    },
        {

        date = "2014-04-28";
        group = "blue.png";
        length = 180;

    },
        {

        date = "2014-04-27";
        group = "blue.png";
        length = 120;

    })

我想将类似的东西分组:

2014-04-27 = (
{ 

            date = "2014-04-27";
            group = "yellow.png";
            length = 180;

        },
            {

            date = "2014-04-27";
            group = "blue.png";
            length = 180;

        })


  2014-04-28 = ( {

            date = "2014-04-28";
            group = "blue.png";
            length = 120;

        })

有人可以帮我吗?我试过很多FOR,但我无法得到它

【问题讨论】:

  • 必须注意,您的第一个列表省略了相当关键的包含数组。您的第二个示例显然假设外部对象将成为包含数组的字典。我怀疑你需要更好地理解你的对象嵌套。
  • (要开始处理您的问题,首先按日期对第一种情况下的数组进行排序。没有“内置”功能可以执行此操作,您必须使用其中一个 NS(可变)具有适当谓词结构的数组sortUsing 操作。在 SO 上很容易有十几个关于这种确切场景的最新示例,所以在询问如何操作之前先进行一些搜索。)

标签: ios objective-c nsarray nsdictionary


【解决方案1】:

您的原始数据结构看起来好像是一个字典数组。你的问题措辞有误吗?我看到每个单独的字典,但它们没有键入顶级数据结构中的任何内容。

假设是这种情况(您有一个名为 originalArray 的数组

NSMutableDictionary *dictionaryByDate = [NSMutableDictionary new];

for(NSDictionary *dictionary in originalArray)
{
    NSString *dateString = dictionary[@"date"];
    NSMutableArray *arrayWithSameDate = dictionaryByDate[dateString];
    if(! arrayWithSameDate)
    {
        arrayWithSameDate = [NSMutableArray new];
        dictionaryByDate[dateString] = arrayWithSameDate;
    }
    [arrayWithSameDate addObject: dictionary];
}

到此结束时,dictionaryByDate 将成为数组的字典(以日期为键)(给定数组中的所有对象都将是具有相同日期的字典)。

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2021-02-25
    • 1970-01-01
    相关资源
    最近更新 更多