gpt4 book ai didi

iphone - 如何将 ABRecordRef 添加到 iPhone 中的 NSMutableArray?

转载 作者:太空狗 更新时间:2023-10-30 03:25:06 24 4
gpt4 key购买 nike

我想创建一个 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 ABRecordRefCFTypeRef 的类型定义,它又解析为 const void *。这就是警告的来源:调用 addObject: 时,const 限定符“丢失”。

在这种情况下,我们知道没问题。 CFTypeRef 是一个半高级类型,该类型的实例支持CFRetainCFRelease。这反过来意味着可以将其转换为 id 并将其视为 NSObject。所以你应该能够做到:

[bContacts addObject:(id)ref];

关于iphone - 如何将 ABRecordRef 添加到 iPhone 中的 NSMutableArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com