我有increment: NSNumber
并希望使用usleep
功能。我试着转换成:
let value = increment.intValue
let sec:useconds_t = value as! useconds_t
usleep(sec)
错误是前一个演员总是失败。
编辑:想要翻译以下来自here
的Objective-c代码- (void)progressTask:(NSNumber *)increment{
// get increment value
int _increment = [increment intValue];
float progress = 0.0f;
while (progress < 1.0f) {
progress += 0.01f;
self.progressIndicator.progress = progress;
// increment in microseconds (100000mms = 1s)
usleep(_increment);
}
}
如何从useconds_t
获得NSNumber
?
答案 0 :(得分:1)
useconds_t
只是UInt32
的类型别名,因此只需执行
let value = increment.unsignedIntValue // returns UInt32
usleep(value) // no conversion necessary
当然,你永远不应该在主UI线程上这样做。乃至 在后台线程上通常有更好的解决方案 (例如GCD方法)。
答案 1 :(得分:0)
好的,我测试了这个,所以我知道它现在有效:
let num = NSNumber(int: 1)
let secs = useconds_t(num.intValue)