2016-08-31 4 views
3

Reachability.swiftを3.​​0に更新しようとしていて、Reachabilityインスタンスをコールバック関数に渡す際に問題があります。と '> UnsafeMutablePointer < _''UnsafeMutablePointer'タイプのイニシャライザを呼び出せません

タイプの初期化子を呼び出すことはできません:*自己=到達可能性クラスコンパイラが言ってエラーをスロー

var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil) 

context.info = UnsafeMutablePointer(Unmanaged.passUnretained(self).toOpaque()) 

注意してください :ここでは

は私の抜粋です '(UnsafeMutableRawPointer)'型の引数リスト

ポインタの変換が制限されています。使用する.assumingMemoryバウンド(to :) 'または ' .bindMemory(to:capacity :) 'をタイプとして表示します。 'UnsafeMutablePointer < _>' の

オーバーロードは、これらの部分的 一致するパラメータリストであります(RawPointer)、(OpaquePointer)、 (OpaquePointer?)、(UnsafeMutablePointer)、 (UnsafeMutablePointer?)

私が理解しているのは、タイプopen class Reachability: NSObjectの自己をUnsafeMutablPointerに変換する必要がありますが、進める方法がわかりません。

+1

で ガードlet info = info else {return} let reachability = Unmanaged .fromOpaque( "到達可能性:SCNetworkReachability、フラグ:SCNetworkReachabilityFlags、info:UnsafeMutableRawPointer? (情報).takeUnretainedValue() DispatchQueue.main.async { reachability.reachabilityChanged() } } –

+1

https://www.dropbox.com/s/d6uc8z8kij1zmmf/Reachability%20Swift%203.zip?dl=1 –

+1

@LeoDabusありがとうございました! –

答えて

3

チェックthe latest referenceからinfoプロパティのタイプ:

宣言

var info: UnsafeMutableRawPointer? 

そしてtoOpaque()のタイプはUnsafeMutableRawPointerとなっています。 (私は最新のAppleの文書を発見したことができませんでしたが、あなたはXcodeのクイックヘルプ]ペインで簡単に確認することができます。)

あなたは変換する必要がない:

context.info = Unmanaged.passUnretained(self).toOpaque() 
関連する問題