我正在尝试检索联系人电话号码,以便能够代表用户发送短信。如果号码包含国家/地区代码(即以+
或00
开头),我很好。但是,如果不是这种情况,我会猜测国家代码应该是什么。
// contact is a CNContact with at least one phone number
contact.phoneNumbers[0].value.value(forKey: "countryCode") as? String
会返回国家代码,例如us
或fr
(即使it's not recommended to do so),但我发现它有时会不准确。我的猜测是Apple使用用户的本地。它甚至会将数字与显式国家/地区代码错误分类。例如,数字00 54 ...
被归类为us
,而它来自阿根廷。
我还可以使用用户当前的本地(NSLocale.currentLocale().objectForKey(NSLocaleCountryCode) as? String
)并使用它填充缺少的国家/地区代码。但它显然会错误地分类一些数字。
是否有更好的错误方式?