首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在NSMutableArray中实现“按值分组”?

如何在NSMutableArray中实现“按值分组”?
EN

Stack Overflow用户
提问于 2011-12-20 06:39:15
回答 5查看 8.5K关注 0票数 8

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

代码语言:javascript
复制
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";
    }
)

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

代码语言:javascript
复制
 NSLog(@"logMuArray %@",[logMuArray valueForKey:@"log_date"]);

但是我只想获取唯一的日期。**我考虑过NSPredicate或可变集等等。

代码语言:javascript
复制
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"
)

提前谢谢.

编辑:

我也听说过"@distinctUnionOfObjects“

.

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-12-20 07:31:26

Shanti的答案已经接近了。您希望使用键值编码集合操作符@distinctUnionOfObjects。将运算符放置在您希望它影响的键前面,就好像它是您正在访问的密钥路径的一部分一样:

代码语言:javascript
复制
[logMuArray valueForKeyPath:@"@distinctUnionOfObjects.log_date"]

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

票数 15
EN

Stack Overflow用户

发布于 2011-12-20 06:49:45

为此您可以使用KVC

代码语言:javascript
复制
[logMuArray valueForKey:@"@distinctUnionOfArrays.log_date"]

编辑:编辑这个wrt乔希的回应

代码语言:javascript
复制
[logMuArray valueForKeyPath:@"@distinctUnionOfArrays.log_date"]
票数 3
EN

Stack Overflow用户

发布于 2011-12-20 06:50:12

您应该将NSSet用于以下特殊项目:

代码语言:javascript
复制
NSSet *filteredData = [NSSet setWithArray:[logMuArray valueForKey:@"log_date"]];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8571646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档