最近項(xiàng)目有點(diǎn)忙,好久都沒有來更新博客了,俗話說好記性不如個(gè)爛筆頭。今天也是抽出了一點(diǎn)時(shí)間來更新一下博客,來記錄一下在自己在開發(fā)中遇到的坑,希望能幫到你。
讀取通訊錄實(shí)現(xiàn)
iOS9之前
AddressBookUI、AddressBook
iOS9以后
蘋果爸爸在iOS 9之后更新了新的框架ContactsUI、Contacts
今天我們就不說實(shí)現(xiàn)的方法了,想必大家都知道怎么實(shí)現(xiàn)我就不多啰嗦了,我們今天來探討一下iOS 11.0通訊錄手機(jī)號(hào)“空格”bug。
進(jìn)入正題之前我們還是說一下事情的緣由,這一天我依舊向往常一樣,在制造bug和修改bug的道路上忙碌著。測(cè)試的小姐姐有點(diǎn)不淡定的跟我我說不能話費(fèi)充值。納尼??... 剛才做了一筆還是OK的這就倒下了.... 呃呃呃 ,立馬我自己又是試了一下 NIMA竟然能行,查看了一下上送報(bào)文才發(fā)現(xiàn)手機(jī)號(hào)有“空格”。呵呵 那就 替換一下stringByReplacingOccurrencesOfString:@"-" withString:@""
什么鬼 沒有作用。
我試著將手機(jī)號(hào)轉(zhuǎn)成utf8編碼打印看了一下

1523007154912.jpg
%C2%A0 問題就在這里這根本就不是一個(gè)空格,我們都知道utf8格式下空格是要被裝換成%20。問題找到了,接下來就是如何處理這個(gè)問題了。很簡(jiǎn)單 我們只需要將非數(shù)字的其它字符給過濾掉就行了。
這里提供兩種簡(jiǎn)單的實(shí)現(xiàn)方式
- 正則
- (NSString *)phoneNumberFormat:(NSString *)phoneNum{
NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:@"[^\\d]" options:0 error:NULL];
phoneNum = [regular stringByReplacingMatchesInString:phoneNum options:0 range:NSMakeRange(0, [phoneNum length]) withTemplate:@""];
return phoneNum;
}
- 字符串拼接
- (NSString *)phoneNumberFormat:(NSString *)phoneNum{
NSString *tempStr = @"";
for (int i = 0; i < phoneNum.length; i++){
unichar _char = [phoneNum characterAtIndex:i];
if (_char <= '9' && _char >= '0'){
tempStr = [NSString stringWithFormat:@"%@%c",tempStr,_char];
}
}
return tempStr;
}
到此問題解決,希望能夠幫到你。