如何解决' Locale'没有会员' objectForKey'?让decimalseparator在我的代码中工作

时间:2016-11-16 02:52:39

标签: ios swift xcode

func textField(_ textField: UITextField,
               shouldChangeCharactersIn range: NSRange,
               replacementString string: String) -> Bool{
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        let currentLocale = NSLocale.current
        let decimalSeparator = currentLocale.objectForKey(NSLocaleDecimalSeparator) as! String
        let existingTextHasDecimalSeparator = textField.text?.rangeOfString(decimalSeparator)
        let replacementTextHasDecimalSeparator = string.rangeOfString(decimalSeparator)
        if existingTextHasDecimalSeparator != nil && replacementTextHasDecimalSeparator != nil {
            return false
        } else {
            return true
        }

有人可以帮我解决问题"类型的价值' Locale'"没有会员' objectForKey'在小数点分隔线上?感谢

3 个答案:

答案 0 :(得分:0)

也许尝试将其更改为NSLocale.init(localeIdentifier: NSLocale.current.identifier).object(forKey: NSLocale.Key.decimalSeparator)

答案 1 :(得分:0)

直接使用currentLocale

的属性
let currentLocale = NSLocale.current
let decimalSeparator:String = currentLocale.decimalSeparator!

这对我有用。

let currentLocale = NSLocale.current
let decimalSeparator:String = currentLocale.decimalSeparator!
let existingTextHasDecimalSeparator = "text1.".range(of: decimalSeparator)
let replacementTextHasDecimalSeparator = "text2.".range(of:decimalSeparator)
if existingTextHasDecimalSeparator != nil && replacementTextHasDecimalSeparator != nil {
    print(true)
} else {
    print(false)
}

答案 2 :(得分:0)

<a class="phone" href="tel:04480252578">044 802 52578</a> Swiftified Locale类)没有名为的成员函数,但Foundation没有。

NSLocale

至少可以使用let local = Locale.current as NSLocale local.object(forKey: NSLocale.Key.someKey) 。我希望Xcode9.0的支持会在某个时候被删除,所以当那一天到来时我们就不应该使用它。