我收到错误:
C指针类型'ABRecordRef'(又名'const void *')到Objective-C指针类型'id'的隐式转换需要桥接转换
从此代码中尝试将ABRecordRef
添加到NSMutableArray
ABRecordRef person = (__bridge ABRecordRef)[contactArr objectAtIndex:i];
[addressBookArray addObject:person];
addressBookArray
定义为
NSMutableArray *addressBookArray;
答案 0 :(得分:5)
正如错误消息所示,您需要重新投射对象才能将其重新放回NSMutableArray
:
ABRecordRef person = (__bridge ABRecordRef)[contactArr objectAtIndex:i];
[addressBookArray addObject:(__bridge ABRecord *)person];
ABRecord
是与ABRecordRef
对应的ObjC类;它们是免费的桥接器,所以它们可以互换用于此目的。
注意:ABRecord
仅适用于OS X.如果您在iOS上并且首先设法将这些ABRecordRef
设置为NSArray
,那么您将会必须使用id
进行重播
[addressBookArray addObject:(__bridge id)person];