我今天有一个关于 Objective-C 的问题,涉及 NSMutableArray。来自 .net/c# 背景,我在处理这些事情时遇到了一些麻烦。
假设我有一个名为“歌曲”的对象
我的歌曲有 3 个属性:
- 职位
- 艺术家
- 类型
我有一个 NSMutableArray 或 NSArray 来保存我所有的 Song 对象。
我将如何尝试“查询”我的数组以获得仅包含(唯一)艺术家或流派的新数组。
在 .net 中,您会编写一个带有 DISTINCT 子句的简单 LINQ 查询,在 Objective-C 中如何解决这个问题?我在猜测谓词,但正在努力寻找解决方案。
最佳答案
您还可以使用:
NSArray *uniqueArtists = [songs valueForKeyPath:@"@distinctUnionOfObjects.artist"];
NSArray *uniqueGenres = [songs valueForKeyPath:@"@distinctUnionOfObjects.genre"];
同样,如果您需要比较整个对象,您可以创建一个新的只读属性,该属性动态组合您想要匹配的值(通过散列或其他方式)并对其进行比较:
NSArray *array = [songs valueForKeyPath:@"@distinctUnionOfObjects.hash"];
注意:请记住,这会返回指定属性的唯一值,而不是对象本身。所以它将是一个 NSString 值数组,而不是 Song 值。
关于objective-c - 从 NSMutableArray 获取独特的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969349/