2015-09-09 4 views
6

私はNSTimeIntervalの値を持っていますので、dispatch_time_tという値を作成する必要があります。これは私が試したものです:NSTimeIntervalでdispatch_time_tを作成

let timeInterval : NSTimeInterval = getTimeInterval() 

//ERROR: Binary operator '*' cannot be applied to operands of type 'NSTimeInterval' and 'UInt64' 
let dispatch_time = dispatch_time(DISPATCH_TIME_NOW, Int64(timerInterval * NSEC_PER_SEC)) 

私はこのエラーメッセージを理解していますが、それを取り除く方法はわかりません。誰か提案をお願いしますか? NSTimeIntervaldispatch_timeインスタンスを作成するにはどうすればよいですか?ありがとう!

答えて

8
let delayTime = dispatch_time(DISPATCH_TIME_NOW, 
    Int64(0.3 * Double(NSEC_PER_SEC))) 

dispatch_after(delayTime, dispatch_get_main_queue()) { 
    //... Code 
} 

これは試しても問題ありません。その結果、

ERROR: Binary operator '*' cannot be applied to operands 
of type 'NSTimeInterval' and 'UInt64' 

let timeInterval : NSTimeInterval = getTimeInterval()

let dispatch_time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeInterval * NSEC_PER_SEC))

そして、あなたは次のエラーを受信して​​いる:あなたが持っている

let d_time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeInterval * Double(NSEC_PER_SEC))) 
+0

私の 'NSTimeInterval'値を0.3に置き換えたのはなぜですか?私はこの作品を理解していますが、私の質問には答えません。 –

+0

@ Leem.fin私はあなたがそれを確認することができます私の答えを更新しました – Shardul

1

:あなたのコードで

だけで、あなたの最後の行を置き換えますキャストまたは変更する必要がありますこれらの変数は、式がInt64(timeInterval * NSEC_PER_SEC)であるため、互換性のあるデータ型になります。

  • timeIntervalタイプDouble
  • NSEC_PER_SECの別名であるNSTimeIntervaldispatch_time関数は、したがってInt64引数

を期待してUInt64

  • ありますエラーw NSEC_PER_SECDoubleに変更してデータタイプがtimeIntervalになるように変更してください。

    let dispatch_time = dispatch_time(DISPATCH_TIME_NOW, 
        Int64(timeInterval * Double(NSEC_PER_SEC))) 
    

    別のランダム点:dispatch_timeを呼び出すときに、あなたの変数dispatch_timeに名前を付けるとき、あなたはおそらくVariable used within its own initial valueエラーが発生します。

  • 関連する問題