PhoneNumberKit
A Swift framework for parsing and formatting phone numbers
... should try and make sure PhoneNumberKit is allocated once and deallocated when no longer needed. To parse a string, use the parse function. The region code is automatically computed but can be overridden if needed. PhoneNumberKit automatically does a hard type validation to ensure that the object created is valid, this can be quite costly performance-wise and can be turned off if needed.