我想创建一个 ABRecordRef 数组来存储具有有效生日字段的联系人。
NSMutableArray* bContacts = [[NSMutableArray alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
for( int i = 0 ; i < nPeople ; i++ )
{
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i );
NSDate* birthdayDate = (NSDate*) ABRecordCopyValue(ref, kABPersonBirthdayProperty);
if (birthdayDate != nil){
[bContacts addObject:ref];
}
}
编译器显示此警告:警告:传递“addObject:”的参数 1 会丢弃指针目标类型中的限定符我搜索了网络,发现我必须将 ABRecordRef 转换为 ABRecord* 才能存储在 NSMutableArray 中。
[bContacts addObject:(ABRecord*) ref];
但ABRecord 似乎不是iOS 框架的一部分。现在我如何将 ABRecordRef 存储到 NSMutableArray ?
A ABRecordRef
是一个类型定义CFTypeRef
进而决定const void *
。这就是警告的来源:调用addObject:
, the const
限定符“丢失”。
在这种情况下我们知道没问题。 CFTypeRef 是半高级类型,该类型的实例支持CFRetain
and CFRelease
。这反过来意味着可以将其投射到id
并将其视为 NSObject。所以你应该能够简单地执行以下操作:
[bContacts addObject:(id)ref];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)