根据属性从NSArray创建NSSet

jar*_*ryd 8 objective-c nsarray nsset

如何NSSet基于属性从数组创建对象.

例如,对象数组,每个对象都具有对type属性的强引用,并且数组中存在多个每种类型的对象.如何将其转变为NSSet持有每种类型的单个对象.

Kir*_*odd 7

NSSet *distinctSet = [NSSet setWithArray:[array valueForKeyPath:@"@distinctUnionOfObjects.property"]];
Run Code Online (Sandbox Code Playgroud)


Kha*_*azi 0

你会使用:

NSSet* mySetWithUniqueItems= [NSSet setWithArray: yourArray];
Run Code Online (Sandbox Code Playgroud)

无论数组中的对象类型如何,这都应该有效,并且只会使用数组中出现的任何重复对象一次来填充 NSSet。

我希望这有帮助。

更新:下一个最好的事情是:首先使用类名和对象属性的串联,然后使用上述方法。

self.concatenatedArray=[NSMutableArray arrayWithCapacity:4];

for (TheClass* object in self.myArray)
    [self.concatenatedArray addObject:[NSString stringWithFormat:@"%@-%@",[object class], object.theProperty]];

self.mySet=[NSSet setWithArray:self.concatenatedArray];
Run Code Online (Sandbox Code Playgroud)

我不确定您将使用 NSSet 输出做什么,但您可能可以修改串联元素以在 NSSet 输出中包含您需要的信息。