objective-c - 从 NSMutableArray 获取独特的项目

标签 objective-c nsmutablearray nsarray

我今天有一个关于 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/

相关文章:

ios - 用于填充 UITableView 的 NSMutableArray 属性

iphone - 在 NSArray 中搜索值匹配值

ios - Plist 值被替换而不是添加

ios - 事件指示器在 iOS 中不起作用?

objective-c - Swift 无法将 NSNumber 桥接到 Float

iphone - NSXMLParser 如何将 NSMutableDictionary 传递给 NSMutableArray

ios - Objective-C:改变自身属性的递归方法

iOS : Query regarding dynamically created array

ios - NSDictionary 在 Objective-C 中设置 Bundle 为空

objective-c - 如何在iphone的NSURLRequest中设置超时