【发布时间】:2011-03-12 08:13:28
【问题描述】:
问题在于,在phones 变量处调用的任何方法总是会导致运行时崩溃。
在此版本中,1 (ABMultiValueCopyValueAtIndex) 出现错误。
如果我要评论这一行,代码会在2 (ABMultiValueGetCount) 崩溃。
看来物业是空的。如果我 NSLog phones 变量。我得到(null)。
我在 iPhone 模拟器上测试代码,那里有一些虚拟联系人和一些电话号码。
还有firstName 和lastName 的工作就像一个魅力。
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];
}
【问题讨论】:
-
那么你的问题是如何处理空值?
-
我的问题是,如何从通讯录中获取号码。数字在那里,但我不知何故为空。
标签: iphone objective-c properties addressbook abaddressbook