【问题标题】:Why can't I use .toInt() on a String in swift? [duplicate]为什么我不能快速在字符串上使用 .toInt() ? [复制]
【发布时间】:2017-02-10 01:22:32
【问题描述】:

我正在使用 swift 制作一个模拟远程控制 Iphone 应用程序,而 Xcode 不允许我在 UILabel 的文本上使用 .toInt()。我正在尝试将文本从标签转换为整数,但我不知道该怎么做。有人可以帮帮我吗?谢谢。

这是我的代码:

@IBAction func channelInc(_ sender: UIButton) {
    var chnl = channel.text!.toInt()

    if (chnl!+1 > 99) {

    } else {
        let newChnl = chnl!+1
        channel.text = "\(String(newChnl))"
    }
}

【问题讨论】:

    标签: swift


    【解决方案1】:

    String 类上没有名为 toInt() 的方法。快速执行此操作的方法是使用 Int 类的初始化程序。

    let number = Int("5")
    // returns a Int? (optional)
    

    【讨论】:

    • 修复了编译器错误,但现在它给了我一个运行时错误,因为它正在获取内存中字符串的地址(而不是字符串中的整数),并将其转换为整数,并且然后尝试添加它。你知道如何将字符串中的数字转换为整数吗?
    • 这根本不应该发生。你能显示它的输出吗?和更新的代码。这个 int 初始化程序实际上是在 swift 2 中为此特定目的创建的。你应该做let chnl = Int(channel.text!)channel 是 textField 还是类似的东西?
    • 频道是一个 UILabel。这个函数是一个绑定到一个应该增加通道的按钮的动作。当我按下按钮时,出现以下错误:
    • *** 第一次抛出调用堆栈:( 0 CoreFoundation 0x000000010cbfad4b exceptionPreprocess + 171 1 libobjc.A.dylib 0x000000010b77b21e objc_exception_throw + 48 2 CoreFoundation 0x000000010cc6af04 -[NSObject(NSObject(NSObject(NSObject) 3 核心基础 0x000000010cb80005 __forwarding + 1013
    • 4 corefoundation 0x000000010cb7fb88 _cf_forward_prep_0 + 120 5 uikit 0x000000010d1a28bc - [Uiapplication sendaction:to:from:forevent:] + 83 6 uikit 0x000000010d328c38 - [Uicontrol Sendaction:to:forevent:] + 67 7 uikit 0x000000010d328f51 - [UIControl _sendActionsForEvents:withEvent:] + 444
    【解决方案2】:

    试试

    让 chnl:Int? = Int(channel.text!)

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 2010-09-25
      • 1970-01-01
      相关资源
      最近更新 更多