アドレス帳に保存されているすべての電話番号には、「自宅」、「職場」、「自宅のファックス」などのラベルが付いています。特定の連絡先のラベルを変更して、「ATM」という名前のカスタム ラベルを付ける必要があります。
次のエラー メッセージが表示されました。
"Assertion failed: (((ABCMultiValue *)multiValue)->flags.isMutable), function ABMultiValueReplaceLabelAtIndex, file /SourceCache/AddressBook_Sim/AddressBook-796.6/ABMultiValue.c, line 118."
これは私のコードです。例外が発生した場所にコメントがあります:
- (void)displayPerson:(ABRecordRef)person {
NSString* name = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
self.firstName.text = name;
NSString* phone = nil;
NSString* lbl = nil;
NSString* newLbl = @"ATM";
ABMultiValueRef phoneNumbers = ABRecordCopyValue(person,
kABPersonPhoneProperty);
if (ABMultiValueGetCount(phoneNumbers) > 0) {
phone = (__bridge_transfer NSString*)
ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
lbl = (__bridge_transfer NSString*)
ABMultiValueCopyLabelAtIndex(phoneNumbers, 0);
//*** HERE IS THE PROBLEM ***
ABMultiValueReplaceLabelAtIndex(phoneNumbers, CFSTR("ATM"), 0);
NSLog(@" - %@ (%@)", phone, lbl);
} else {
phone = @"[None]";
lbl = @"[None]";
newLbl = @"[None]";
}
CFRelease(phoneNumbers);
}
その電話番号のラベルを変更するにはどうすればよいですか?