ios - MCSessionDelegate 要求类符合 NSObjectProtocol

标签 ios swift multipeer-connectivity

我试图使用 Apple 的 MultipeerConnectivity 库,但我的类(class)不会停止抛出错误“Type LocalClient does not conform to NSObjectProtocol”。我是否遗漏了任何会导致此错误的内容?

import Foundation
import MultipeerConnectivity

class LocalClient : MCSessionDelegate {
    var availableServers : [Int]
    var session : MCSession
    var peerID : MCPeerID
    var browser : MCBrowserViewController

    init(name : String) {
        peerID = MCPeerID(displayName: name)

        session = MCSession(peer: peerID)
        session.delegate = self

        browser = MCBrowserViewController(serviceType: "JoinGame", session: session)
    }

    func session(session: MCSession!, peer peerID: MCPeerID!, didChangeState state: MCSessionState) {

    }

    func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) {

    }

    func session(session: MCSession!, didStartReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, withProgress progress: NSProgress!) {

    }

    func session(session: MCSession!, didFinishReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, atURL localURL: NSURL!, withError error: NSError!) {

    }

    func session(session: MCSession!, didReceiveStream stream: NSInputStream!, withName streamName: String!, fromPeer peerID: MCPeerID!) {

    }

}

编辑:格式化。

最佳答案

MCSessionDelegate 协议(protocol)派生自NSObjectProtocol。 因此,您的类应该是 NSObject 的子类,以便它继承所有 NSObjectProtocol 方法:

class LocalClient : NSObject, MCSessionDelegate {  }

这还需要您调用 super.init()(在值被 分配给所有属性):

init(name : String) {
    peerID = MCPeerID(displayName: name)
    session = MCSession(peer: peerID)
    availableServers = []
    browser = MCBrowserViewController(serviceType: "JoinGame", session: session)

    super.init()

    session.delegate = self
}

关于ios - MCSessionDelegate 要求类符合 NSObjectProtocol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25541339/

相关文章:

ios - 将日期从时区转换为设备本地时区和日期

ios - 如何在 Swift 中将 UIColor 转换为 3/4/6/8 位十六进制字符串?

swift - 使用闭包在两个 Controller 之间传递数据

ios - 更新布局 anchor 未按预期工作

ios - didFinishReceivingResourceWithName 未被调用

ios - 如何在点击另一个单元格后操作 UITableViewCell? - swift

ios - 无法更改 UIButton 上的自定义 UIFont 大小

iphone - 搜索显示 Controller 搜索栏

ios - PeerId(MCPeerID)定制

ios - 通过多点连接跟踪 NSProgress 的变化