我收到一个错误:
将 C 指针类型"ABRecordRef"(又名"const void *")隐式转换为 Objective-C 指针类型"id"需要桥接强制转换
从此代码中,尝试向NSMutableArray
添加ABRecordRef
ABRecordRef person = (__bridge ABRecordRef)[contactArr objectAtIndex:i];
[addressBookArray addObject:person];
addressBookArray
定义为
NSMutableArray *addressBookArray;
正如错误消息所说,您需要重新转换对象才能将其放回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];