Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift-当变量超过某个点时检测_Swift - Fatal编程技术网

Swift-当变量超过某个点时检测

Swift-当变量超过某个点时检测,swift,Swift,我搜索了Stack Overflow,当然还有Google,但什么都没找到(这让我很惊讶) 我有一个不断变化的整数变量,当变量超过某个数时,我想运行某个函数。无限的while循环显然只会让手机慢下来,甚至可能崩溃 该变量是来自CMMotionManager的加速度变量,在显示/打印时提供加速计数据。这不是我设定的变量 例如: if Example > 2 { // Example being the integer variable from another module // d

我搜索了Stack Overflow,当然还有Google,但什么都没找到(这让我很惊讶)

我有一个不断变化的整数变量,当变量超过某个数时,我想运行某个函数。无限的while循环显然只会让手机慢下来,甚至可能崩溃

该变量是来自CMMotionManager的加速度变量,在显示/打印时提供加速计数据。这不是我设定的变量

例如:

if Example > 2 { // Example being the integer variable from another module
    // do stuff here
}
编辑:不,等待几秒钟然后再次检查在我的情况下不起作用


Edit2:这不是我设置的变量,而是来自另一个模块的变量。

您是否检查了willSet和didSet选项

var _test : Int = 0 {

    //First this
    willSet {
        println("Old value is \(_test), new value is \(newValue)")
    }

    //value is set

    //Finaly this
    didSet {
        println("Old value is \(oldValue), new value is \(_test)")
    }
}

更多细节。

我不太明白这实际上是如何检查一个变量是否高于或低于某个数字的,你能详细说明一下吗?@EdwardBrown:只需将你的
if条件
写在
didSet
块中。你可以比较newValue来查看。即,如果newValue>2。注意:在上面的例子中,你将Int与0.2(浮点值)进行了比较,而将Int与浮点值进行比较并不是你想要的最幸福的解决方案。它是如何不断变化的?它是否被其他线程/进程修改?这应该包含一些变化的物理测量吗?是来自CMMotionManager的加速度变量提供了来自加速计的数据,它显然是不断变化的。变量不是我设置的。他们没有在更改时调用的委托或通知吗?如果没有,请使用
NSTimer
定期检查。检查可以每
0.1秒重复一次,这就足够了。我对CMMotionManager不是很熟悉,但是有一个
StartAccelerMeterUpdatesToQueue(u:withHandler:)
方法看起来是一个更好的方法请将相关信息添加到问题本身。否,因为由于手机很少稳定,加速计数据几乎每0.1秒更改一次,使用NSTimer时,请注意首先编辑。