我正在尝试根据字母表过滤我的联系人,类似这样的
NSArray *sectionArray = [contactAdd filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", [self.friendListSection objectAtIndex:section]]];
但问题是contactAdd不是CFArray定义为
的常规数组@property CFArrayRef contactAdd;
所以这段代码不起作用,有没有其他方法可以使用上面的CFArray代码或任何其他解决方案来获得所需的结果?
注意:我不想将我的contactAdd更改为常规数组,我只需要使用CFArray
答案 0 :(得分:4)
NSArray *array = (NSArray *)CFBridgingRelease(self.contactAdd);
NSArray *sectionArray = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", [self.friendListSection objectAtIndex:section]]];
引用documentation(强调添加)
CFArray
与其可可基金会同行NSArray
进行“免费桥接”。这意味着在使用桥接Foundation对象的函数或方法调用中,Core Foundation类型是可互换。因此,在您看到NSArray *
参数的方法中,您可以传入CFArrayRef
,并且在您看到CFArrayRef
参数的函数中,您可以传入{{1}实例。这也适用于NSArray
的具体子类。有关免费桥接的更多信息,请参阅“免费桥接类型”。
有关桥接铸造的额外信息: NSString to CFStringRef and CFStringRef to NSString in ARC?