如何以每 1 秒的延迟运行 for 循环?
Posted
技术标签:
【中文标题】如何以每 1 秒的延迟运行 for 循环?【英文标题】:How to run for loop with delay of every 1 sec? 【发布时间】:2018-03-16 10:54:45 【问题描述】:我正在为 Apple 的 Watch 应用程序实现闹钟功能。所以在这里我必须将当前时间与用户时间进行比较,并且我必须每 1 秒获取一次当前时间,这样我就实现了如下代码,但这不起作用。任何机构都可以在Objective-C中发布适当的代码吗?
for (int i=0; i<86400; i++)
if ([getTotalDate isEqualToString:self.curTime])
NSLog(@"It's Alarm Time");
[self presentControllerWithName:@"FifthViewController" context:nil];
break;
else
NSLog(@"not alarm time");
//[self currentTime];
【问题讨论】:
你不能只使用 NSTimer 来循环延迟时间吗? 为什么要使用for循环? 【参考方案1】:最好的方法是为特定时间设置本地通知。你应该在didReceiveLocalNotification
中打开FifthViewController
。您可以查看以下答案以了解如何使用本地通知。
How to implement LocalNotification using objective C?
【讨论】:
嗨..谢谢你的回复..实际上我正在为苹果手表实现这个。那么您能否建议我如何通过 Apple Watch 的本地通知实现警报功能.. 这里没有提到,所以我怎么知道它是苹果手表程序。您可以查看此链接以获取 Apple Watch 通知。 natashatherobot.com/watchkit-actionable-notifications【参考方案2】:尝试使用步幅
这是 Apple 提供的解决方案(循环迭代时间限制):Swift control flow with Stride
某些用户可能希望其 UI 中的刻度线更少。他们可能更喜欢每 5 分钟一个分数。使用 stride(from:to:by:) 函数跳过不需要的标记。
let minuteInterval = 5
for tickMark in stride(from: 0, to: minutes, by: minuteInterval)
// render the tick mark every 5 minutes (0, 5, 10, 15 ... 45, 50, 55)
let hours = 12
let hourInterval = 3
for tickMark in stride(from: 3, through: hours, by: hourInterval)
// render the tick mark every 3 hours (3, 6, 9, 12)
【讨论】:
@Tj3n - 是的,亲爱的,我知道,但是 OP 添加了标签swift
,他也可以在 Objective-C 项目中使用 Swift 代码。而且苹果可能没有在 Objective-C 中提供这个解决方案。所以如果 OP 可以在 Objective-C 项目中注入 Swift 代码,那么这对他会有帮助。
嗨..感谢您的回复..实际上我正在使用Objective C进行开发,那么目标c中是否也存在这种跨步?如果可以,请在目标 c 中发布代码..以上是关于如何以每 1 秒的延迟运行 for 循环?的主要内容,如果未能解决你的问题,请参考以下文章