我是一名新的快速开发人员。我正在使用Swift 4.2和Xcode 10.1。
我正在使用Mamelroy的PhoneNumberKit解析数字以返回国家/地区代码。解析工作得很好(尽管起初有点慢)。但是,当给定美国的免费电话号码(888)或(866)时,PhoneNumberKit返回AG,这是安提瓜和巴布达的两位数字国家代码。 AG的NPA前缀为268,甚至不接近888或866。
我准备处理AG的结果,并测试它是否确实是安提瓜或巴布达电话号码,但我想确认这是PhoneNumberKit的问题,而不是我做错了什么。我的代码在下面。
class ContactService {
static let phoneNumberKit = PhoneNumberKit()
static func getFlag(number:String) -> String {
// Strip out all characters but +
let basicNumber = number.filter("01234567890+".contains)
// Get the country code and return it
do {
let phoneNumber = try phoneNumberKit.parse(basicNumber)
let regionCode = phoneNumberKit.getRegionCode(of: phoneNumber)
return regionCode!
}
catch {
return "PhoneNumberKit was unable to get the region code."
}
}
}
在我的联系人中返回AG的三个数字如下:
1(866)814-9582, (866)255-9679和 (888)888-7020
如果这是已知问题或是否有其他修复方法,请告诉我。
答案 0 :(得分:1)
我在这里找到了一个答案(尽管我以前已经搜索过GitHub):https://github.com/marmelroy/PhoneNumberKit/issues/135。它说AG(美国保护国)是第一个与免费电话号码匹配的国家,因此PhoneNumberKit返回AG。建议改为返回用户的语言环境。
我建议返回美国。
我在这里留下这个问题并回答,以帮助其他人以这种意外结果搜索SO。