Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/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代码在iPhone 5上不起作用_Iphone_Swift_Sprite Kit_Arc4random - Fatal编程技术网

Swift代码在iPhone 5上不起作用

Swift代码在iPhone 5上不起作用,iphone,swift,sprite-kit,arc4random,Iphone,Swift,Sprite Kit,Arc4random,我刚刚完成我的swift游戏,我将在所有设备上尝试它。 我只是注意到,在iphone5s之前,所有设备都不能与arc4random配合使用。iPhone 5是32位设备,Arc4Randomy返回UInt32,如果随机数太大,将导致溢出。正如onevcat所说,我试图用arc4random_制服取代arc4random。 但还是不行 请参见下面的“我的代码”和屏幕截图错误: var lastYieldTimeInterval:NSTimeInterval = NSTimeInterval() v

我刚刚完成我的swift游戏,我将在所有设备上尝试它。 我只是注意到,在iphone5s之前,所有设备都不能与arc4random配合使用。iPhone 5是32位设备,Arc4Randomy返回UInt32,如果随机数太大,将导致溢出。正如onevcat所说,我试图用arc4random_制服取代arc4random。 但还是不行

请参见下面的“我的代码”和屏幕截图错误:

var lastYieldTimeInterval:NSTimeInterval = NSTimeInterval()
var lastUpdatetimeInterval:NSTimeInterval = NSTimeInterval()
var lastUpdatetimeIntervalBl:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalrou:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalro:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalj:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalvio:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalv:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalora:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervaln:NSTimeInterval = NSTimeInterval()
var lastYieldTimeIntervalGold:NSTimeInterval = NSTimeInterval()


func updateWithTimeSinceLastUpdate(timeSinceLastUpdate:CFTimeInterval){


    let minInterval = UInt32(0)
    let maxInterval = UInt32(1500)
    let rangeInterval = UInt32(maxInterval - minInterval)




    lastYieldTimeInterval += timeSinceLastUpdate
    let intervalbl = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeInterval > NSTimeInterval(intervalbl)){
        lastYieldTimeInterval = 0
        addBalloonbl()

    }

    lastYieldTimeIntervalj += timeSinceLastUpdate

    let intervalj = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalj > NSTimeInterval(intervalj)){
        lastYieldTimeIntervalj = 0
        addBalloonj()
        }

    lastYieldTimeIntervalora += timeSinceLastUpdate
    let intervalora = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalora > NSTimeInterval(intervalora)){
        lastYieldTimeIntervalora = 0
        addBalloonora()
    }


    lastYieldTimeIntervalrou += timeSinceLastUpdate
    let intervalrou = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalrou > NSTimeInterval(intervalrou)){
        lastYieldTimeIntervalrou = 0
        addBalloonrou()
    }


    lastYieldTimeIntervalro += timeSinceLastUpdate
    let intervalro = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalro > NSTimeInterval(intervalro)){
        lastYieldTimeIntervalro = 0
        addBalloonro()
    }


    lastYieldTimeIntervalvio += timeSinceLastUpdate
    let intervalvio = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalvio > NSTimeInterval(intervalvio)){
        lastYieldTimeIntervalvio = 0
        addBalloonvio()
    }


    lastYieldTimeIntervalv += timeSinceLastUpdate
    let intervalv = Int(arc4random_uniform(rangeInterval)) + Int(minInterval)
    if (lastYieldTimeIntervalv > NSTimeInterval(intervalv)){
        lastYieldTimeIntervalv = 0
        addBalloonv()
    }


    let minIntervalBl = 1
    let maxIntervalBl = 3000
    let rangeIntervalBl = maxIntervalBl - minIntervalBl


    lastYieldTimeIntervaln += timeSinceLastUpdate
    let intervaln = Int(arc4random()) % Int(rangeIntervalBl) + Int(minIntervalBl)
    if (lastYieldTimeIntervaln > NSTimeInterval(intervaln)){
        lastYieldTimeIntervaln = 0
        addBalloonnoir()
    }

    let minIntervalGold = 4
    let maxIntervalGold = 3000
    let rangeIntervalGold = maxIntervalGold - minIntervalGold


    lastYieldTimeIntervalGold += timeSinceLastUpdate
    let intervalGold = Int(arc4random()) % Int(rangeIntervalGold) + Int(minIntervalGold)
    if (lastYieldTimeIntervalGold > NSTimeInterval(intervalGold)){
        lastYieldTimeIntervalGold = 0
        addBalloongold()
    }

} 

我发现了为什么这不起作用。实际上,它不是TimesInclastUpdate,而是arc4random。我忘了换两行。现在一切都正常了


感谢您的帮助

我认为真正的错误信息是“Int”不能转换为“UInt32”?是的,您是对的。我使用你提到的问题。尽管我改正了错误,我仍然有相同的错误,请看屏幕截图。它在lastYieldTimeInterval+=TimesInclastUpdate上停止我用新代码更新了问题,这是相同的问题:lastYieldTimeInterval和TimesInclastUpdate有不同的类型。Swift不会隐式转换类型。我不知道我必须做什么:我的知识非常有限。从几周前开始我就开始编写代码了:我上一次的评论实际上是错误的lastYieldTimeInterval和TimesInclastUpdate都是双精度的。我不明白为什么代码会在那一行崩溃。我重新提出了这个问题。。。