2016-09-27 3 views
0

:次にhttps://www.ralfebert.de/tutorials/ios-swift-multipeer-connectivity/変換スウィフト3に問題私はこの良いチュートリアルを次れたと私は、関連するプロジェクトダウンロード

を、私はXcodeでそれを開いて、コードでスウィフト3.

にそれを変換し、ありましたこの:

func browser(browser: MCNearbyServiceBrowser!, foundPeer peerID: MCPeerID!, withDiscoveryInfo info: [NSObject : AnyObject]!) { 
    NSLog("%@", "foundPeer: \(peerID)") 
    NSLog("%@", "invitePeer: \(peerID)") 
    browser.invitePeer(peerID, toSession: self.session, withContext: nil, timeout: 10) 
} 

とXcodeはこれにそれを変換:

func browser(_: MCNearbyServiceBrowser, foundPeer: MCPeerID, withDiscoveryInfo: [String : String]?){ 
    //... 
    browser.invitePeer(MCPeerID, to: self.session, withContext: nil, timeout: 10) 
} 

ご覧のとおり、最初の引数はもうbrowserではありません。これは、メソッドがinvitePeerを呼び出すことができないという事実を引き起こします(その時点で誰も何がbrowserか分かりません)。

コードを変換してinvitePeerを呼び出し、新しい署名を尊重するにはどうすればよいですか?

答えて

1

メソッドの最初の引数

func browser(_ browser: MCNearbyServiceBrowser, foundPeer: MCPeerID, withDiscoveryInfo: [String : String]?){ 
     //... 
     browser.invitePeer(MCPeerID, to: self.session, withContext: nil, timeout: 10) 
    } 
+0

私は即座にこれを試してみましたが、XCodeのは、誤り –

+1

は削除されませんそれは完全にXCodeの再起動後に働いた – Vinodh

+0

を示すスクリーンショットのXcodeをアップロードしてください、それは(ラベルなし)のやり方を「固定」のXCodeそのものだ非常 –

1

前に、このお試しください_ Xcodeの移行が追加されます、以下のように変更してください:今、あなたはあなたの中にあなたの最初の引数名のラベルを提供しなければならないSwift3から

func browser(_ browser: MCNearbyServiceBrowser!, 
      foundPeer peerId: MCPeerID!, 
      withDiscoveryInfo info: [String : String]!) { 
    browser.invitePeer(peerId, toSession: self.session, withContext: nil, timeout: 10) 
    // not sure if invitePeer was converted too but in any case 
    // browser.invitePeer(peerId, to: self.session, withContext: nil, timeout: 10) 
} 

を最初の引数に明示的なラベルを付けて関数を呼び出さない場合は、少なくとも関数の宣言またはアンダースコア(_)を使用します。

+0

をありがとう –

関連する問題