我正在尝试将 ABRecordRef 项添加到我的 NSMutableArray 中。刚了解到需要使用 (_bridge id) 将 C TypeDef 转换为 Objective-C id 类型。因此,在将新项添加到数组之前,我想检查该对象是否已经在数组中。因此,我尝试使用 [nsmutablearray containsObject] 但它似乎不起作用。重复项仍会添加到数组中。你知道这里可能出了什么问题吗?
-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{
if (![_buddiesList containsObject:(__bridge id)person]) {
[_buddiesList addObject:(__bridge id)person];
NSLog(@"Added");
}
return NO;
}
最佳答案
ABRecordRef
没有 NS 等价物,-containsObject:
只是在其所有对象上调用 -isEqual:
以确定是否存在是否已包含重复项,因此您的方法无效。
我建议围绕 ABRecordRef
编写一个包装类,并在那里实现您自己的 -isEqual:
方法。
更新:
正如@omz 所指出的,它确实 有效,因为 CFEqual()
被调用了,谢谢!不过,在 ABRecordRef 周围使用包装类仍然是一个好主意。
关于ios - 如何检查 NSMutableArray 数组中是否已经有 (__bridge id) 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14365282/