Ios MCSessionDelegate要求类符合NSObjectProtocol

Ios MCSessionDelegate要求类符合NSObjectProtocol,ios,swift,multipeer-connectivity,Ios,Swift,Multipeer Connectivity,我试图使用Apple的MultipeerConnectivity库,但我的类不会停止抛出错误类型LocalClient不符合NSObjectProtocol。我是否遗漏了任何可能导致此错误的内容 import Foundation import MultipeerConnectivity class LocalClient : MCSessionDelegate { var availableServers : [Int] var session : MCSession

我试图使用Apple的MultipeerConnectivity库,但我的类不会停止抛出错误类型LocalClient不符合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协议源自NSObjectProtocol。 因此,您的类应该是NSObject的子类,以便继承所有NSObjectProtocol方法:

这还要求您在输入值后调用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
}
MCSessionDelegate协议源自NSObjectProtocol。 因此,您的类应该是NSObject的子类,以便继承所有NSObjectProtocol方法:

这还要求您在输入值后调用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
}