我有一个应用程序,其中包含用户在电话号码中键入的UITextField,然后点击调用按钮,然后调用此方法。
- (IBAction)callVendor:(id)sender {
NSString *phoneNumber = [NSString stringWithFormat:@"tel:%f",
self.phoneTextField.text.doubleValue];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:phoneNumber]];
}
当我尝试使用.intValue创建字符串时,电话号码完全关闭。我拨打的是德克萨斯而不是堪萨斯!
当我尝试使用double时,我得到一个更大的数字,因为NSURL类忽略了小数我猜。所以我拨打555-555-5555-000000
之类的东西当我使用浮动时,我得到一个舍入错误。像555-555-5634-000000而不是555-555-5555-000000。我假设这个是由二进制 - >基数为10的舍入错误。
如果我需要拨打国际电话或没有区号,我不想将其截断为10个号码。我有什么选择?
答案 0 :(得分:2)
您可以做的最好的事情是将电话号码作为NSString传递。为什么要将它转换为数字?它甚至可以包含一个+号。 您可以通过执行以下操作来修剪所有不需要的字符:
NSCharacterSet *charactersToRemove = [[NSCharacterSet characterSetWithCharactersInString:@"+0123456789"] invertedSet];
NSString *newPhoneNumber = [[self.phoneTextField.text componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""];
newPhoneNumber = [NSString stringWithFormat:@"tel:%@", newPhoneNumber];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:newPhoneNumber]];