首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在iPhone的地址簿上处理多个属性?

如何在iPhone的地址簿上处理多个属性?
EN

Stack Overflow用户
提问于 2019-04-17 00:23:08
回答 2查看 0关注 0票数 0

问题是我总是在phones变量调用的任何方法上遇到运行时崩溃。在这个版本我在1ABMultiValueCopyValueAtIndex)得到一个错误。如果我要评论这一行,代码会崩溃2ABMultiValueGetCount)。看起来房产是空的。如果我NSLogphones变量。我得到(null)。我在iPhone模拟器上测试代码,我有一些虚拟联系人,有一些电话号码。

代码语言:javascript
复制
for(id person in people){
    NSString *firstName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
    NSString *lastName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
    ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
    NSString *phone = (NSString*)ABMultiValueCopyValueAtIndex(phones, 0); /*1*/
/*2/  id ph, phLb;
    for (CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) {  
        phLb = ABMultiValueCopyLabelAtIndex(phones, i);
        ph = ABMultiValueCopyValueAtIndex(phones, i);
        NSLog(@"%@,%@", phLb, ph);
        CFRelease(phLb);
        CFRelease(ph);
    }
*/  
NSLog(@"%@", firstName);
NSLog(@"%@", lastName);
NSLog(@"%@", phones);
NSLog(@"%@", phone);

[firstName release];
[lastName release];
[phone release];
[phones release];

}

EN

回答 2

Stack Overflow用户

发布于 2019-04-17 09:10:59

我认为你对如何获得ABMultiValueRef的假设是错误的。我没有在这台计算机上使用我的AB代码,但验证ABRecordCopyValue是合适的方法。然后研究ABMultiValueRef如何访问其内容。它是一个完全不同的对象集,而不是简单的字符串。

票数 0
EN

Stack Overflow用户

发布于 2019-04-17 09:39:06

代码:

代码语言:javascript
复制
addressBook = ABAddressBookCreate();
people = (NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
CFRelease(addressBook);

取消分配了地址簿,所有被引用的对象也被释放了。因此,在使用之前,指向MultiValueRefs的指针已被释放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档