gpt4 book ai didi

ios - stringByReplacingOccurrencesOfString 仅适用于某些对象(调试器中的 NSString 为黑色而不是蓝色)

转载 作者:行者123 更新时间:2023-11-29 03:16:14 26 4
gpt4 key购买 nike

我有一个从 iPhone 联系人应用程序获取所有联系人的方法,我想在删除电话号码字符串中的所有空格后将电话号码添加到对象。问题是这只适用于某些联系人。我注意到在调试器中,字符串对象有时显示为蓝色,有时显示为黑色。有人知道这里发生了什么吗?

图片:

不删除电话号码中的空格

http://ctrlv.in/293692

删除电话号码中的空格

http://ctrlv.in/293691

代码:

ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
CFArrayRef sortedPeople = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName);

//RETRIEVING THE FIRST NAME AND PHONE NUMBER FROM THE ADDRESS BOOK

CFIndex number = CFArrayGetCount(sortedPeople);

NSString *firstName;
NSString *phoneNumberFromContact;

for(int i = 0; i < number; i++)
{

ABRecordRef person = CFArrayGetValueAtIndex(sortedPeople, i);
firstName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
phoneNumberFromContact = (__bridge NSString *) ABMultiValueCopyValueAtIndex(phones, 0);

if(phoneNumberFromContact != NULL)
{
Contact *contact = [[Contact alloc]init];

contact.firstName = firstName;
phoneNumberFromContact = [phoneNumberFromContact stringByReplacingOccurrencesOfString:@" " withString:@""];
contact.phoneNumber = phoneNumberFromContact;
[self.contacts addObject:contact];
}
}

最佳答案

NSString 中有许多字符显示为空格。删除它们的所有实例是相当困难的。适合您情况的最佳方法是只保留您想要的字符(数字)。正如您引用的答案所述,您需要创建一组要保留的字符:

NSCharacterSet *numbers = [NSCharacterSet 
characterSetWithCharactersInString:@"0123456789"];

然后你需要删除除那些字符之外的所有内容。这可以通过几种不同的方式完成。您建议的答案中的扫描仪可能是最快的。但是代码行最少(在我看来最易读)的方式是这样的:

number = [[number componentsSeparatedByCharactersInSet: numbers] componentsJoinedByString: @""];

它可能会很慢,所以如果您执行此操作一百万次,请继续使用扫描仪。

关于ios - stringByReplacingOccurrencesOfString 仅适用于某些对象(调试器中的 NSString 为黑色而不是蓝色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com