NSNumber在Swift中使用了seconds_t?

时间:2015-04-30 16:44:29

标签: ios objective-c swift

我有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

2 个答案:

答案 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)