2016-09-27 5 views
0

Я следовал этот хороший учебник, и я скачал соответствующий проект: https://www.ralfebert.de/tutorials/ios-swift-multipeer-connectivity/Конверсия Свифта 3 выпуск

Затем я открыл его в XCode и превратили его в Swift 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

Пожалуйста, измените, как показано ниже, Xcode миграция будет добавить _ перед методом первого аргумента

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, спасибо большое –

1

Попробуйте это:

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) 
} 

От Swift3 теперь вы должны предоставить метку для имени аргумента в вашей или, по крайней мере, подчеркивание (_), если вы не хотите называть ваш func яркой меткой для вашего первого аргумента.

+0

Это само по себе XCode, которые «фиксированные» вещи, что путь (без этикетки) –

Смежные вопросы