2012-01-29 65 views
0

我有一個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); 

然後它返回數字。是的,我有reloadDate視圖Willappear。

+0

如果您在收到答案後從根本上編輯您的問題,答案沒有任何意義。這使得對其他人有限使用的問題和答案。 – Abizern 2012-01-29 18:21:27

回答

1

您在發佈phoneNumbers後直接複製到它。嘗試將它移到使用它之後。

或者更好的是,通過ARC

ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty); 
number = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0); 

所有權轉移給NSString的對象,並沒有必要調用CFRelease(phoneNumbers)可言。

至於讓數字進入單元格,你會對你的類型感到困惑。您將NSString放入theNumber,但是您拉出Contacts。然後發送一些number消息。

你已經把一個字符串放在數組中,你只能拉出一個字符串或一個子類。

NSString *numbers = [thenumbers objectAtIndex:indexPath.row]; 
cell.detailTextLabel.text = numbers; 
+0

謝謝,我做到了。奇怪的是它仍然是(null)在tableView中。 – Blade 2012-01-29 14:13:07

+0

感謝您的編輯。但現在它不會返回任何東西。不是(null)也不是數字。再次檢查NSLog和斷點,數字肯定在數組中。 – Blade 2012-01-29 15:48:09

+0

沒有看到代碼的其餘部分,我可以做很多事情。 – Abizern 2012-01-29 16:08:26

1

在下面的代碼,

ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty); 
CFRelease(phoneNumbers); 
number = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0); 

您正在釋放的phoneNumbers然後你accesing變量。將其更改爲如下。

ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty); 
number = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0); 
CFRelease(phoneNumbers); 
+0

謝謝,但我使用Abizerns解決方案。它的相同我猜。但tableView仍返回(空),而不是數字。 – Blade 2012-01-29 14:14:00