简体   繁体   中英

Ambiguous reference to member 'session(_:peer:didChange)' error in multipeer connectivity framework in xcode 8 swift 3

I have been working on multipeer connectivity framework.While initializing a session object ,i get an error stating "Ambiguous reference to member 'session(_:peer:didChange)' ".I get the same error while making the class as delegate of the same session object. here is the code implementation.Any suggestions would help as i am new to this framework.Thanks in advance:)

#
 import UIKit import MultipeerConnectivity var session : MCSession! var peer : MCPeerID! var browser : MCNearbyServiceBrowser! var advertiser : MCNearbyServiceAdvertiser! var foundPeers = [MCPeerID]() var invitationHandler : ((Bool, MCSession?)->Void)! class MCPManager: NSObject,MCSessionDelegate { public func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) { return } public func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) { return } public func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) { return } public func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) { return } public func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL, withError error: Error?) { return } override init() { super.init() peer = MCPeerID(displayName: UIDevice.current.name) session = MCSession(peer: peer) // Ambiguous reference to member 'session(_:peer:didChange)' session.delegate = self //Ambiguous reference to member 'session(_:peer:didChange)' } } 

When you say session inside MCPManager the compiler is trying to resolve some of the MCSessionDelegate funcs that you're defining and can't disambiguate because the calls are incomplete. However It seems like you're trying to assign one of those vars defined in the outer scope. I think what you really want is moving all those vars into the definition of your MCPManager class, like this:

import UIKit
import MultipeerConnectivity

class MCPManager: NSObject, MCSessionDelegate {
    var session : MCSession!
    var peer : MCPeerID!
    var browser : MCNearbyServiceBrowser!
    var advertiser : MCNearbyServiceAdvertiser!
    var foundPeers = [MCPeerID]()
    var invitationHandler : ((Bool, MCSession?)->Void)!

    override init() {
        super.init()
        peer = MCPeerID(displayName: UIDevice.current.name)
        session = MCSession(peer: peer)
        session.delegate = self
    }

    // MCSessionDelegate methods ommited
}

This compiles and I hope it's what you want.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM