在 xcode 8 swift 3 中的多点连接框架中对成员 'session(_:peer:didChange)' 的错误引用不明确

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

我一直致力于多点连接 framework.While 初始化一个会话对象,我得到一个错误 "Ambiguous reference to member 'session(_:peer:didChange)' "。我在将 class 作为同一个会话对象。这是代码 implementation.Any 建议会有所帮助,因为我是这个 framework.Thanks 的新手:)

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

当您在 MCPManager 中说 session 时,编译器正在尝试解析您正在定义的一些 MCSessionDelegate 函数,并且由于调用不完整而无法消除歧义。但是,您似乎正在尝试分配在外部范围中定义的那些变量之一。我认为您真正想要的是将所有这些变量移动到您的 MCPManager class 的定义中,如下所示:

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
}

编译成功,希望是你想要的。