【问题标题】:Uncaught NSException while checking CharacterSet.isSuperset检查 CharacterSet.isSuperset 时未捕获的 NSException
【发布时间】:2016-08-27 08:57:53
【问题描述】:

我正在尝试验证 iOS 文本框的输入是否仅为数字。

在此块中,我在 XCode 8.0 beta 2 中遇到错误。我该怎么办?

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    let numbersOnly = CharacterSet.decimalDigits;
    let characterSetFromTextField = CharacterSet(charactersIn: string);
    let stringIsValid = numbersOnly.isSuperset(of: characterSetFromTextField);

【问题讨论】:

  • 完整的错误信息是什么?
  • 您可以使用let stringIsValid = Int(string) != nil更轻松地检查
  • @Larme 我没有收到错误,但应用程序因未捕获的 NSException 而崩溃。当我试图捕捉它时,XCode 表示没有什么可以捕捉到 try
  • @vadian 我看了看这个,它似乎对超出整数有效性的数字失败了。
  • @Jublo 通常,当有消息“Uncaught NSException”时,控制台中有更多关于异常的详细信息。

标签: ios xcode nscharacterset


【解决方案1】:

我相信这是 Swift 3.0 中的一个错误

https://bugs.swift.org/browse/SR-2307

与此同时,您可以迭代字符串中的字符并使用 rangeOfCharacter(from: numbersOnly) 作为一种解决方法或做类似的事情 string.trimmingCharacters(in: numbersOnly).characters.count > 0

【讨论】:

    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2014-06-30
    • 2015-12-21
    • 2016-03-25
    • 2017-07-25
    相关资源
    最近更新 更多