ios - 如何检查 NSMutableArray 数组中是否已经有 (__bridge id) 对象

标签 ios objective-c nsmutablearray compare abrecordref

我正在尝试将 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/

相关文章:

objective-c - 尝试检索字符串值时发送到实例的无法识别的选择器

ios - 隐藏 Ionic(AngularJS) 后退按钮不出现

IOS - 使用基于传输的安全性 (HTTPS) 调用 soap web 服务

ios - Sqlite在ios7运行错误

ios - 滚动时 UITableViewCell detailTextLabel 消失

iphone - NSMutableArray 在日志中显示正确值但在表格单元格中不显示

ios - UITableViewCell 自定义类和 UITableView 滚动问题

ios - 使用 Parse iOS SDK 检查用户是否具有有效的自动续订订阅

ios - Quickblox iOS - 消息未读

ios - NSMutableArray 丢失添加的数据