gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:36:21 26 4
gpt4 key购买 nike

我一直在研究多点连接框架。在初始化 session 对象时,我收到一条错误,指出“对成员'session(_:peer:didChange)'的引用不明确”。在将类创建为同一 session 对象的委托(delegate)。这是代码实现。任何建议都会有帮助,因为我是这个框架的新手。提前致谢:)

#
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 类的定义中,如下所示:

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
}

这可以编译,我希望这是你想要的。

关于swift - xcode 8 swift 3 中的多点连接框架中对成员 'session(_:peer:didChange)' 错误的不明确引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42818938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com