我有一个mutableArray并将联系人的号码放入其中。
我使用以下代码:
ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);
CFRelease(phoneNumbers);
number = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
[thenumbers addObject:number];
为了检索它,我这样做:
Contacts *num = [thenumbers objectAtIndex:indexPath.row];
NSString *numbers = [NSString stringWithFormat:@"%@", [num number]];
cell.detailTextLabel.text = numbers;
我设置断点并在正确的位置停止。我也试过
NSLog(@"%@", number);
它返回数字。是的,我在viewWillappear中有reloadDate。
答案 0 :(得分:1)
在以下代码中,
ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);
CFRelease(phoneNumbers);
number = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
您正在发布phoneNumbers
,然后您正在访问该变量。将其更改为如下。
ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);
number = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
CFRelease(phoneNumbers);
答案 1 :(得分:1)
复制到它后,你正在释放phoneNumbers
。使用后尝试移动它。
或者,更好的是,通过ARC将所有权转移到NSString对象
ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);
number = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
根本无需拨打CFRelease(phoneNumbers)
。
至于将数字输入单元格,你会对你的类型感到困惑。您将NSString
放入theNumber
但是您需要Contacts
。然后发送一些number
消息。
你已经在数组中放了一个字符串,你只能拔出一个字符串或一个子类。
NSString *numbers = [thenumbers objectAtIndex:indexPath.row];
cell.detailTextLabel.text = numbers;