[英]Type 'Class' does not conform to protocol 'MCSessionDelegate'
I'm working on migrating my code from Swift 2.X to 3.X and have already resolved majority of my runtime error except one that keeps on bugging out. 我正在将代码从Swift 2.X迁移到3.X,并且已经解决了我的大部分运行时错误,但其中一个错误一直存在。 I have all the required functions and have cleaned and deleted the derived data but it still saying that my class does not conform to 'MCSessionDelegate'.
我具有所有必需的功能,并且已清理并删除了派生数据,但仍然说我的课程不符合“ MCSessionDelegate”。 `
`
import MultipeerConnectivity
import Foundation
class Cashier: Advertiser
{
var waiterBecomesConnectedHandler: ((MCPeerID) -> Void)?
var waiterBecomesDisconnectedHandler: ((MCPeerID) -> Void)?
}
extension Cashier: MCSessionDelegate
{
@available(iOS 7.0, *)
func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress) {
}
@available(iOS 7.0, *)
func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState) {
switch state {
case .notConnected:
waiterBecomesDisconnectedHandler?(peerID)
connectedPeerSessions.removeValue(forKey: peerID)
break
case .connected:
waiterBecomesConnectedHandler?(peerID)
break
case .connecting:
break
}
}
@available(iOS 7.0, *)
func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
}
@available(iOS 7.0, *)
func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID) {
}
@available(iOS 7.0, *)
func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL, withError error: Error?){
}
}`
Here is the code for the protocol ` 这是协议的代码
// Delegate methods for MCSession.
public protocol MCSessionDelegate : NSObjectProtocol {
// Remote peer changed state.
@available(iOS 7.0, *)
public func session(_ session: MCSession, peer peerID: MCPeerID, didChange state: MCSessionState)
// Received data from remote peer.
@available(iOS 7.0, *)
public func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID)
// Received a byte stream from remote peer.
@available(iOS 7.0, *)
public func session(_ session: MCSession, didReceive stream: InputStream, withName streamName: String, fromPeer peerID: MCPeerID)
// Start receiving a resource from remote peer.
@available(iOS 7.0, *)
public func session(_ session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, with progress: Progress)
// Finished receiving a resource from remote peer and saved the content
// in a temporary location - the app is responsible for moving the file
// to a permanent location within its sandbox.
@available(iOS 7.0, *)
public func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL, withError error: Error?)
// Made first contact with peer and have identity information about the
// remote peer (certificate may be nil).
@available(iOS 7.0, *)
optional public func session(_ session: MCSession, didReceiveCertificate certificate: [Any]?, fromPeer peerID: MCPeerID, certificateHandler: @escaping (Bool) -> Swift.Void)
}`
Remove all the functions from the extension 从扩展中删除所有功能
extension Cashier: MCSessionDelegate.
One of your delegate methods is wrong. 您的委托方法之一是错误的。
at localURL: URL
should be at localURL: URL?
at localURL: URL
应该at localURL: URL?
func session(_ session: MCSession,
didFinishReceivingResourceWithName resourceName: String,
fromPeer peerID: MCPeerID,
at localURL: URL?,
withError error: Error?)
https://developer.apple.com/documentation/multipeerconnectivity/mcsessiondelegate/1406984-session https://developer.apple.com/documentation/multipeerconnectivity/mcsessiondelegate/1406984-session
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.