2014-08-28 81 views
1

我試圖從Apple使用MultipeerConnectivity庫,但我的類不會停止拋出錯誤「類型LocalClient不符合NSObjectProtocol」。我是否錯過了會導致此錯誤的任何內容?MCSessionDelegate需要類符合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!) { 

    } 

} 

編輯:格式。

回答

4

MCSessionDelegate協議源自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 
} 
+0

謝謝。那個錯誤把我拋棄了。 – 2014-08-28 17:27:32