当前位置: 首页 > 面试题库 >

“%不可用:改为使用truncatingRemainder”是什么意思?

龙昊焱
2023-03-14
问题内容

使用扩展代码时,出现以下错误,我不确定他们是否要求使用其他运算符或基于Internet搜索修改表达式中的值。

错误:%不可用:改用truncatingRemainder

扩展码:

extension CMTime {
    var durationText:String {
        let totalSeconds = CMTimeGetSeconds(self)
        let hours:Int = Int(totalSeconds / 3600)
        let minutes:Int = Int(totalSeconds % 3600 / 60)
        let seconds:Int = Int(totalSeconds % 60)

        if hours > 0 {
            return String(format: "%i:%02i:%02i", hours, minutes, seconds)
        } else {
            return String(format: "%02i:%02i", minutes, seconds)
        }
    }
}

设置分钟和秒变量时会发生错误。


问题答案:

CMTimeGetSeconds()返回浮点数(Float64aka Double)。在Swift 2中,您可以将浮点除法的余数计算为

let rem = 2.5 % 1.1
print(rem) // 0.3

在Swift 3中,这是通过

let rem = 2.5.truncatingRemainder(dividingBy: 1.1)
print(rem) // 0.3

应用于您的代码:

let totalSeconds = CMTimeGetSeconds(self)
let hours = Int(totalSeconds / 3600)
let minutes = Int((totalSeconds.truncatingRemainder(dividingBy: 3600)) / 60)
let seconds = Int(totalSeconds.truncatingRemainder(dividingBy: 60))

但是,在这种特殊情况下,首先更容易将持续时间转换为整数:

let totalSeconds = Int(CMTimeGetSeconds(self)) // Truncate to integer
// Or:
let totalSeconds = lrint(CMTimeGetSeconds(self)) // Round to nearest integer

然后接下来的几行简化为

let hours = totalSeconds / 3600
let minutes = (totalSeconds % 3600) / 60
let seconds = totalSeconds % 60


 类似资料:
  • 当使用代码进行扩展时,我得到以下错误,我不确定他们是要求使用不同的操作符还是修改基于互联网搜索的表达式中的值。 错误:%不可用:请改用trunchingRemaider 扩展代码: 设置分钟和秒变量时出错。

  • 这可能是有史以来问过的最愚蠢的问题,但我认为对于一个Java新手来说,这相当令人困惑。 有人能澄清什么是不可变的吗 一个很好的例子(在Java中)将非常感谢。

  • 问题内容: 作为Python的初级开发人员,我已经在控制台中多次看到此错误消息,但是我不完全了解它的含义。 谁能以一般的方式告诉我,哪种操作会产生此错误? 问题答案: 当您尝试使用 无法调用的对象时,会发生该错误。 可调用对象可以是函数或类(实现方法)。根据Python Docs : object . call (self [,args …]) :当实例被“调用”为函数时调用 例如: 不是可调用的

  • 问题内容: 我正在尝试使用syscall 在Linux中分配一些内存。这是我尝试过的: 事情是按照linux调用约定,我希望返回值在寄存器中(指向已分配内存的指针)。我在gdb中运行了此文件,并在进行了syscall 后注意到以下寄存器内容 在系统调用之前 系统调用后 在这种情况下,我不太了解寄存器中的值。哪个指针可以用作我分配给它的8个字节的开头的指针? 问题答案: 系统调用返回值始终位于中。请

  • 问题内容: 我只是想使用Django中的url标记与另一个页面建立简单的连接。我收到“设置对象不可逆”的错误。搜索了一下之后,我一直找不到任何东西。 urls.py admin_view.html 我以前没有遇到过这个问题,而且看起来只是我要解决的一个简单问题。任何帮助表示赞赏。 问题答案: 应该是一个清单。您目前有一套。它应该是: 在模板中,当网址格式名称为字符串时,应使用引号: 如果要使用名称

  • 问题内容: eval函数是一种动态生成代码的强大而简便的方法,那么有哪些警告? 问题答案: 错误使用 eval会 打开代码以进行注入攻击 调试 可能会更具挑战性(没有行号等) 评估的代码执行速度较慢(没有机会编译/缓存评估的代码) 编辑:正如@Jeff Walden在评论中指出的那样,今天#3的真实性要低于2008年。但是,尽管可能会缓存一些已编译脚本,但这只会限于未经修改就重复的脚本。更有可能的