将 ABRecordRef 添加到 NSMutableArray 会导致有关需要桥接转换的错误



我收到一个错误:

将 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];

最新更新