如何在NSMutableArray中实现"按值分组"?

Arp*_*ekh 8 iphone cocoa-touch objective-c nsmutablearray

我正在使用NSMutableArray.我想像在SQL中那样按日期获取值group by "log_date".

logMuArray (
        {
        "log_currenttime" = "4:30pm";
        "log_date" = "11.12.2011";
        "log_duration" = "1:30";
    },
        {
        "log_currenttime" = "4:33pm";
        "log_date" = "11.12.2011";
        "log_duration" = "2:21";
    },
        {
        "log_currenttime" = "4:40pm";
        "log_date" = "11.12.2011";
        "log_duration" = "5:30";
    },
        {
        "log_currenttime" = "7:30pm";
        "log_date" = "12.12.2011";
        "log_duration" = "1:30";
    },
        {
        "log_currenttime" = "7:33pm";
        "log_date" = "12.12.2011";
        "log_duration" = "2:21";
    },
        {
        "log_currenttime" = "7:40pm";
        "log_date" = "12.12.2011";
        "log_duration" = "5:30";
    },
        {
        "log_currenttime" = "07:16pm";
        "log_date" = "19.12.2011";
        "log_duration" = "0:07";
    },
        {
        "log_currenttime" = "7:31pm";
        "log_date" = "19.12.2011";
        "log_duration" = "0:04";
    },
        {
        "log_currenttime" = "7:33pm";
        "log_date" = "19.12.2011";
        "log_duration" = "0:03";
    },
        {
        "log_currenttime" = "7:33pm";
        "log_date" = "19.12.2011";
        "log_duration" = "0:06";
    },
        {
        "log_currenttime" = "7:35pm";
        "log_date" = "19.12.2011";
        "log_duration" = "0:05";
    }
)
Run Code Online (Sandbox Code Playgroud)

**所以,我刚刚表演了....

 NSLog(@"logMuArray %@",[logMuArray valueForKey:@"log_date"]);
Run Code Online (Sandbox Code Playgroud)

但我只想获取UNIQUE日期.**我已经考虑过NSPredicate或Mutable Set等......

logMuArray (
    "11.12.2011",
    "11.12.2011",
    "11.12.2011",
    "12.12.2011",
    "12.12.2011",
    "12.12.2011",
    "19.12.2011",
    "19.12.2011",
    "19.12.2011",
    "19.12.2011",
    "19.12.2011"
)
Run Code Online (Sandbox Code Playgroud)

提前致谢.....

编辑:

我也听说过"@distinctUnionOfObjects"

......

Jos*_*ell 14

Shanti的答案很接近.您想使用Key-Value Coding集合运算符@distinctUnionOfObjects.将操作员放在您希望它影响的键的前面,就好像它是您正在访问的键路径的一部分:

[logMuArray valueForKeyPath:@"@distinctUnionOfObjects.log_date"]
Run Code Online (Sandbox Code Playgroud)

注意使用valueForKeyPath:,而不是valueForKey:前者是键值编码协议中的方法,并允许访问任意深度的属性.关键路径NSString由点分隔键组成.每个键查找的结果依次用于访问下一个键(从原始接收器开始); 默认情况下,valueForKey:只需在每一步调用.