使用像NSArray这样的谓词过滤CFArray

时间:2013-09-28 06:04:38

标签: objective-c ios5 nsarray nspredicate

我正在尝试根据字母表过滤我的联系人,类似这样的

NSArray *sectionArray = [contactAdd filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", [self.friendListSection objectAtIndex:section]]];

但问题是contactAdd不是CFArray定义为

的常规数组
@property  CFArrayRef contactAdd;

所以这段代码不起作用,有没有其他方法可以使用上面的CFArray代码或任何其他解决方案来获得所需的结果?

注意:我不想将我的contactAdd更改为常规数组,我只需要使用CFArray

1 个答案:

答案 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?