そのため、Xcodeプロジェクトにこの小さなアルゴリズムがあり、機能しなくなりました。何を試しても、別の番号に番号を追加できないことを示しています。
注意:
ターゲットをiOS 7.0に変更する前は、すべてが完全に機能していました。
それがそれと関係があるかどうかはわかりませんが、iOS 8に切り替えても、エラーが発生し、ビルドが失敗しました。
コード:
var delayCounter = 100000
for loop in 0...loopNumber {
let redDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter) / 30000
let blueDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter) / 30000
let yellowDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter) / 30000
let greenDelay: NSTimeInterval = NSTimeInterval(arc4random_uniform(100000) + delayCounter) / 30000
}
問題は、delayCounter
がInt
であるのに、arc4random_uniform
がUInt32
を返すことです。 delayCounter
をUInt32
として宣言する必要があります。
var delayCounter: UInt32 = 100000
let redDelay = NSTimeInterval(arc4random_uniform(100000) + delayCounter) / 30000
または、arc4random
の結果をInt
に変換します。
var delayCounter:Int = 100000
let redDelay = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter) / 30000
関数arc4random_uniform
はUInt32
を返しますが、delayCounter
の型はInt
です。 Swiftには+
の演算子定義はありませんが、パラメーターとしてUInt32
とInt
を取ります。したがって、Swiftは、この+
演算子の出現をどう処理するかを知りません-それはambiguous
です。
したがって、UInt32
をパラメータとして使用するInt
の既存のイニシャライザを使用して、最初にUInt32
をInt
にキャストする必要があります。
let redDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter) / 30000
let blueDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter) / 30000
let yellowDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter) / 30000
let greenDelay: NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000)) + delayCounter) / 30000
別のアプローチは、delayCounter
をUInt32
として宣言することです。
let delayCounter: UInt32 = 100000
_arc4random_uniform
_関数は_UInt32
_を返します。 Int
に変換する必要があります
関数宣言func arc4random_uniform(_: UInt32) -> UInt32
解決策:
let redDelay:NSTimeInterval = NSTimeInterval(Int(arc4random_uniform(100000))+ delayCounter)/ 30000