xcode 8 swift 3 中多点连接框架中对成员“会话(_:peer:didChange)”错误的模糊引用
Posted
技术标签:
【中文标题】xcode 8 swift 3 中多点连接框架中对成员“会话(_:peer:didChange)”错误的模糊引用【英文标题】:Ambiguous reference to member 'session(_:peer:didChange)' error in multipeer connectivity framework in xcode 8 swift 3 【发布时间】:2017-03-15 19:25:21 【问题描述】:我一直在研究多点连接框架。在初始化会话对象时,我收到一条错误消息,指出“对成员 'session(_:peer:didChange)' 的引用不明确”。我在创建类时遇到了同样的错误同一会话对象的委托。这是代码实现。任何建议都会有所帮助,因为我是这个框架的新手。提前致谢:)
#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)'
【问题讨论】:
根据您的init()
的代码,我想知道您是否想要MCPManager
类中的所有这些 var 声明...是吗?
是的......这个初始化方法将在创建会话时被调用......你能找到错误的任何原因......提前谢谢:)
【参考方案1】:
当您在MCPManager
中说session
时,编译器正在尝试解析您正在定义的一些MCSessionDelegate
函数,并且由于调用不完整而无法消除歧义。但是,您似乎正在尝试分配在外部范围中定义的这些变量之一。我认为您真正想要的是将所有这些变量移到您的 MCPManager
类的定义中,如下所示:
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
这个编译,我希望它是你想要的。
【讨论】:
非常感谢:)以上是关于xcode 8 swift 3 中多点连接框架中对成员“会话(_:peer:didChange)”错误的模糊引用的主要内容,如果未能解决你的问题,请参考以下文章