4
我試圖轉換這方面的工作目標C代碼斯威夫特(which is based on this Apple Documentation)NSDataDetector沒有找到電話號碼,結果類型
-(BOOL)validatePhone:(NSString*)phone {
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber
error:&error];
NSArray *matches = [detector matchesInString:phone
options:0
range:NSMakeRange(0, [phone length])];
for (NSTextCheckingResult *match in matches) {
if ([match resultType] == NSTextCheckingTypePhoneNumber) {
NSString *phoneNumber = [match phoneNumber];
self.inputPhoneNumber.text = phoneNumber;
return TRUE;
}
}
NSLog(@"Phone Number Not Found");
return FALSE;
}
這裏是我的雨燕轉換:
func validatePhone(phone: NSString) -> Bool {
var error: NSError?
let detector = NSDataDetector(types: NSTextCheckingType.PhoneNumber.rawValue, error: &error)
var matches: NSArray = [detector!.matchesInString(phone as String, options: nil, range: NSMakeRange(0, phone.length))]
var match:NSTextCheckingResult
for match in matches{
if match.resultType == NSTextCheckingType.PhoneNumber{
inputPhoneNumber.text = match.phoneNumber
return true
}
}
NSLog("Phone Number Not Found")
return false
}
的matches
數組正確匹配輸入的電話號碼並正確顯示類型,如下所示:
但總是檢查結果類型,當我if
語句返回false
if match.resultType == NSTextCheckingType.PhoneNumber
輸入測試爲555-555-5555或5558881234
所以,我應該如何正確檢查的NSTextCheckingType ?
感謝您也包括多種類型,因爲我以後也會需要它。你的代碼幫助我找到問題。我所需要做的就是從比賽中刪除[],它的工作。但是我也喜歡你如何分離這些類型以使其更具可讀性。 –