在 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
}
编译成功,希望是你想要的。
我一直致力于多点连接 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
}
编译成功,希望是你想要的。