gpt4 book ai didi

iphone - 如何获取 ABRecordRef 的所有属性的列表?

转载 作者:技术小花猫 更新时间:2023-10-29 11:03:42 24 4
gpt4 key购买 nike

我想获取 ABPersonRef 和 A​​BGroupRef 的所有属性的列表,而不必使用 kABPersonFirstNameProperty、kABPersonLastNameProperty 的 iOS 预定义键...我正在玩地址簿,我想迭代一个特定的人的所有值(value)观。我知道有预定义的键,但 Apple 将来很可能会添加新的键,所以我想做类似的事情:

ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *allPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
for (int i = 0; i < [allPeople count]; ++i) {
ABRecordRef person = [allPeople objectAtIndex:i];

// This is the line that I can't figure out.
NSArray *allProperties = (NSArray *)ABRecordCopyArrayOfAllProperties(person);
}

我知道我会遇到多值项,稍后我将不得不对其进行循环,但我的目标是获取一个键列表,我可以为单值属性迭代这些键。我不在乎返回的类是什么,NSArray、NSDictionary...等等。

非常感谢任何建议!

最佳答案

您可以尝试以下方法:

使用 ARC:

NSDictionary* dictionaryRepresentationForABPerson(ABRecordRef person)
{
NSMutableDictionary* dictionary = [NSMutableDictionary dictionary];

for ( int32_t propertyIndex = kABPersonFirstNameProperty; propertyIndex <= kABPersonSocialProfileProperty; propertyIndex ++ )
{
NSString* propertyName = CFBridgingRelease(ABPersonCopyLocalizedPropertyName(propertyIndex));
id value = CFBridgingRelease(ABRecordCopyValue(person, propertyIndex));

if ( value )
[dictionary setObject:value forKey:propertyName];
}

return dictionary;
}
  • 我们使用属性的本地化名称 - 在不同的语言环境中会有不同的键。
  • 在下一版本的 iOS 中,属性的数量可能会发生变化。

只要 propertyName 不会变成 UNKNOWN_PROPERTY,也许查看属性的数量就有意义了

关于iphone - 如何获取 ABRecordRef 的所有属性的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6930351/

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