【问题标题】:Adding ABRecordRef to NSMutableArray causes error about requiring bridged cast将 ABRecordRef 添加到 NSMutableArray 会导致有关需要桥接强制转换的错误
【发布时间】:2012-05-02 19:25:27
【问题描述】:

我收到一个错误:

将 C 指针类型“ABRecordRef”(又名“const void *”)隐式转换为 Objective-C 指针类型“id”需要桥接转换

从此代码中,尝试将ABRecordRef 添加到NSMutableArray

ABRecordRef person = (__bridge ABRecordRef)[contactArr objectAtIndex:i];
[addressBookArray addObject:person];

addressBookArray 定义为

NSMutableArray *addressBookArray;

【问题讨论】:

    标签: objective-c cocoa-touch nsmutablearray abrecord


    【解决方案1】:

    正如错误消息所说,您需要重新投射对象才能将其放回NSMutableArray

    ABRecordRef person = (__bridge ABRecordRef)[contactArr objectAtIndex:i];
    [addressBookArray addObject:(__bridge ABRecord *)person];
    

    ABRecord是对应ABRecordRef的ObjC类;它们是免费桥接的,因此可以为此目的互换。


    注意:ABRecord 仅在 OS X 上可用。如果您使用的是 iOS,并且首先设法将这些 ABRecordRefs 放入 NSArray,则必须使用 id重铸

    [addressBookArray addObject:(__bridge id)person];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      相关资源
      最近更新 更多