首先,我搜索了很多,但所有方法似乎都是基元或整个自定义对象。
我的情况是这样的。我在两个不同的数组中有一个类型自定义对象。但是,除了仅有2个字段外,每个对象的字段与另一个字段的字段完全不同。
我想要的是组合这两个数组,然后只删除那两个字段的重复。我怎么能这样做。我的代码到目前为止
NSMutableArray* testArray = [eventHandler returnAllEvents];
NSMutableArray* combinedArray = [[NSMutableArray alloc]init];
NSArray* finalArray = [[NSArray alloc]init];
if (testArray.count==0) {
for (int i = 0; i<facebookData.count; i++) {
LSEvent* event = [facebookData objectAtIndex:i];
[combinedArray addObject:event];
}
finalArray = [combinedArray arrayByAddingObjectsFromArray:calendarData];
}
NSMutableArray *uniqueArray = [NSMutableArray array];
NSMutableSet *names = [NSMutableSet set];
for (id obj in finalArray) {
NSString *destinationName = [obj destinationname];
if (![names containsObject:destinationName]) {
[uniqueArray addObject:obj];
[names addObject:destinationName];
}
}
答案 0 :(得分:0)
如果要使用containsObject检查数组中是否存在该对象:您需要在自定义对象中实现 - (BOOL)isEqual:(id)other。
- (BOOL)isEqual:(id)other {
if (other == self) {
return YES;
}
if (!other || ![other isKindOfClass:[self class]]) {
return NO;
}
if (self.identifier == other.identifier) {
return NO;
}
return YES;
}
答案 1 :(得分:0)
你可以这样做
NSArray first = ...
NSMutableArray second = ... // this will be combine array
for (id someObj in first) {
if ( [second filteredArrayUsingPredicate:[self predicateForObject:someObj ]].count == 0 ){
[second addObject: someObj];
}
}