在xcode 8 multipeer连接框架中对成员会话(_:peer:didChange)的错误引用swift 3
问题描述:
我一直在研究multipeer连接framework.While初始化一个会话对象,我得到一个错误,指出“模糊引用到成员'会话(_:peer:didChange)'“。我得到相同的错误,同时使类作为同一个会话对象的委托。这里是代码implementation.Any建议将帮助我提前:)在xcode 8 multipeer连接框架中对成员会话(_:peer:didChange)的错误引用swift 3
#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)'
}
}
答
是新来这个framework.Thanks当你说session
内MCPManager
编译器正试图解决一些MCSessionDelegate
funcs中的你正在定义并且不能消除歧义,因为这些调用是不完整的。然而,好像你正在试图分配外部范围中定义的那些变量之一。我想你真正想要的是所有这些瓦尔移动到您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
}
这编译,我希望这是你想要的。
+0
谢谢你soo :) – sudharsan
基于你的'init()'的代码我想知道你是否想要在MCPManager类中的所有这些var声明......是吗? – cicerocamargo
是...这个init方法会在创建会话时被调用..你可以找到任何错误的原因..预先感谢:) – sudharsan