在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)' 
    } 
} 
+0

基于你的'init()'的代码我想知道你是否想要在MCPManager类中的所有这些var声明......是吗? – cicerocamargo

+0

是...这个init方法会在创建会话时被调用..你可以找到任何错误的原因..预先感谢:) – sudharsan

是新来这个framework.Thanks当你说sessionMCPManager编译器正试图解决一些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