[英]Type 'ViewController' does not conform to protocol 'MCSessionDelegate'
[英]Type 'Class' does not conform to protocol 'MCSessionDelegate'
我正在將代碼從Swift 2.X遷移到3.X,並且已經解決了我的大部分運行時錯誤,但其中一個錯誤一直存在。 我具有所有必需的功能,並且已清理並刪除了派生數據,但仍然說我的課程不符合“ 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?){
}
}`
這是協議的代碼
// 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)
}`
從擴展中刪除所有功能
extension Cashier: MCSessionDelegate.
您的委托方法之一是錯誤的。 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.