如何给计时器添加 5 秒

2024-04-17

我正在尝试制作一个显示以下时间的计时器 - 小时:分钟:秒:毫秒。这是我的代码:

var timer = NSTimer()
var startTime = NSTimeInterval()

func updateTime()
{
    var currentTime = NSDate.timeIntervalSinceReferenceDate()
    var elapsedTime : NSTimeInterval = currentTime - startTime

    let hours = UInt8(elapsedTime / 3600.0)
    elapsedTime -= (NSTimeInterval(hours) * 3600)

    let minutes = UInt8(elapsedTime / 60.0)
    elapsedTime -= (NSTimeInterval(minutes) * 60)

    let seconds = UInt8(elapsedTime)
    elapsedTime -= NSTimeInterval(seconds)

    let fraction = UInt8(elapsedTime * 100)

    let strHours = String(format: "%02d", hours)
    let strMinutes = String(format: "%02d", minutes)
    let strSeconds = String(format: "%02d", seconds)
    let strFraction = String(format: "%02d", fraction)

    timeLabel.text = "\(strHours):\(strMinutes):\(strSeconds):\(strFraction)"
}

@IBAction func start(sender: AnyObject) {
    if !timer.valid {
        let aSelector : Selector = “updateTime”
        timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
        startTime = NSDate.timeIntervalSinceReferenceDate()
    }
}

如何用另一种方法向计时器添加 5 秒? (显然我必须制作一个全球var,但我现在试图保持简单,首先实际添加 5 秒,然后我们会担心全局部分。)我尝试更改/添加以下内容:

var seconds = UInt8(elapsedTime)
seconds += 5 // Error here...
elapsedTime -= NSTimeInterval(seconds)

但我收到一条错误消息:

致命错误:浮点值无法转换为 UInt8 因为它小于 UInt8.min

给计时器添加 5 秒的正确方法是什么?


使计时器无效,然后创建一个新计时器。您无法修改计时器的时间间隔。

就你的错误而言,elapsedTime可能是负数,这会产生错误。UInt8.min is 0.

计时器不是秒表。一个NSTimer在特定时间触发。

对于像秒表这样的东西,您应该简单地设置一个开始日期。然后,您可以使用设置为一秒的计时器每秒更新一次显示。您将显示当前时间和开始日期之间的差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何给计时器添加 5 秒 的相关文章

随机推荐

  • JUnit 5 何时提供场景测试?

    在一次会议 JavaForum Stuttgart 2016 上 他们表示 JUnit 5 将包含一个支持场景测试的功能 http 2016 java forum stuttgart de de Abstracts Slot 1 html
  • Keras LSTM 输入形状的输入形状错误

    在 Keras 中使用时间序列时出现此错误 ValueError Error when checking input expected lstm 1 input to have 3 dimensions but got array with
  • Swift 中基于内容的动态 UITextView 大小

    我不认为有人可以指导我在仍然使用自动布局的同时动态调整 UITextView 大小的正确方法 使用 Swift 就是这样 我尝试以编程方式调整底部约束 试图让 UITextView 拥抱内容 但我不知道如何获取 UITextView 内容的
  • TinyMCE 在 DOM 中渲染后执行操作

    我正在使用 TinyMCE 4 并按如下方式设置 tinyMCE init mode specific textareas editor selector basicTinyMCE theme modern readonly false 我
  • 长度为 5 的回文数

    给定一个二进制字符串 S 找到长度为 5 的回文子序列的数量 长度为 5 的回文子序列是数组 a 我的想法 我想出了如下的递归 palin s palin s 1 palin s 1 palin s 1 1 当 s 0 s 1 时 就是上面
  • Tomcat:绕过指定 IP 地址的基本身份验证

    我已经配置 tomcat 进行基本身份验证 我不希望任何人访问我的 Web 应用程序 但该应用程序正在提供 Web 服务 所以我想从基本身份验证中绕过特定的IP地址 该IP不应该需要身份验证 tomcat users xml
  • Tomcat 8.5.29 HTTP/2 不支持 GZIP 压缩

    我正在使用 Tomcat 8 5 29 并使用相应的配置 我已为该站点启用了 HTTP2 支持 以下是 server xml 文件中的配置
  • set_index 不在 pandas 中建立索引

    对于下面的简单程序 我期望第二个输出与第一个输出相同 为什么这没有发生 这只是订单的改变data1 and data2 columnList PID Sec Util random data1 67123 12 85 100 67123 1
  • 以编程方式关闭 USB 端口的电源

    我正在开发一个项目 我想使用这些 http www woot com blog post usb powered woot off lights 2 http www woot com blog post usb powered woot
  • git 克隆失败并显示“ssh_dispatch_run_fatal”

    我已经配置了ssh密钥 但仍然无法成功git克隆 错误信息是 git clone email protected cdn cgi l email protection alimail frontend ragusa git Cloning
  • 使用 VBA 实现简单的替换密码

    我正在尝试编写一个程序来更改字符串中的字母 但我一直遇到一个明显的问题 即如果它更改了值 例如将 A 更改为 M 当它更改为 M 时 它会将 M 更改为其他值 因此 当我运行代码将其全部更改回来时 它会将其转换为好像该字母最初是 M 而不是
  • CommandError:使用 Flask-Migrate 迁移时无法找到由“...”标识的修订版本

    我今天开始使用 Flask Migrate 并将其安装在一个测试项目上 但是我收到以下错误 alembic util exc CommandError 无法找到由 e39d16e62810 重现步骤 运行 python create db
  • 如何避免子文件夹上的 svn:mergeinfos ?

    我们尝试仅将 svn mergeinfo 属性保留在根分支文件夹上 然而 我们不断看到它渗入子文件夹中 我们已经能够确定一些可能的原因 在存储库浏览器中移动文件夹 在 IntelliJ 中移动和 或重命名包 使用旧的 svn 客户端 任何人
  • 在azure devOps中,如何在项目中复制仪表板

    我在项目中创建了一个仪表板 并插入小部件来显示团队进度 目前 仪表板中有 2 个团队 每个团队有 8 个小部件 我想将它们分开 以便每个团队都有自己的个人仪表板 因为我不想真正从头开始制作它 所以我想复制它 然后删除其他团队在每个新的个人仪
  • FASM 是否使用 Intel 语法?

    我尝试在 FASM 中编译以下代码 mov DWORD PTR ebp 4 1234567 它给了我一个 无效表达式 错误 但是以下代码有效 mov DWORD ebp 4 1234567 那么 FASM 是否使用 Intel 语法 我假设
  • 如何使用 OOP 运行存储在容器中的实际对象的函数?

    如何使用 OOP 运行存储在容器中的实际对象的函数 背景 我正在编写一个游戏 有 4 间相连的房间 有两种不同的房间类型和两种不同的玩家类型 玩家应该作为线程运行 杀手应该在行动室中与普通玩家进行战斗 在第二种类型的房间里 不应该发生任何事
  • VBScript 条件短路解决方法

    我有一个必须维护的大型经典 ASP 应用程序 并且我多次发现自己因缺乏短路评估能力而受挫 例如 VBScript 不会让你逃脱 if not isNull Rs myField and Rs myField lt gt 0 then 因为如
  • C浮点精度[重复]

    这个问题在这里已经有答案了 可能的重复 浮点比较 https stackoverflow com questions 7011184 floating point comparison 我对 C C 中浮点数的准确性有疑问 当我执行下面的程
  • 如何使用 sprintf 附加字符串?

    我面临着一个严重的问题sprintf 假设我的代码片段是 sprintf Buffer Hello World sprintf Buffer Good Morning sprintf Buffer Good Afternoon 几百次冲刺
  • 如何给计时器添加 5 秒

    我正在尝试制作一个显示以下时间的计时器 小时 分钟 秒 毫秒 这是我的代码 var timer NSTimer var startTime NSTimeInterval func updateTime var currentTime NSD