我有一个NSDictionary数组。每个数组项都有一个名为" Name"的键。现在我想根据此名称值删除重复的条目。
这项工作非常完美:
aMyArray = [aMyArray valueForKeyPath:@"@distinctUnionOfObjects.Name"];
问题是结果数组仍然包含重复字符串,基于案例。例如:[@" Franck"," franck"]
如何删除这些副本?
由于
答案 0 :(得分:0)
您可以尝试这样做
// in your class implementation
- (BOOL)isEqual:(id)object {
if (![object isKindOfClass:[self class]]) {
return NO;
}
typeof(self) obj = (typeof(self))object;
return ([self.Name caseInsensitiveCompare:obj.Name] == NSOrderedSame);
}
- (NSUInteger)hash
{
return [[self.Name lowercaseString] hash];
}
// and then
NSSet *distinctObjects = [[NSSet alloc] initWithArray:array];
NSArray *result = distinctObjects.allObjects;
或者,您可以通过调动valueForKeyPath:
来自定义此 KVC集合运算符来解析您的自定义DSL
,可能会结束类似
aMyArray = [aMyArray valueForKeyPath:@"@distinctUnionOfObjects[caseInsensitive].Name"];
对我来说似乎不是一个好主意,但它肯定是解决问题的可行方案。