【问题标题】:Cannot invoke 'sendData' with an argument list of type '(NSData,toPeer:NSArray,......'无法使用类型为“(NSData,toPeer:NSArray,......”的参数列表调用“sendData”
【发布时间】:2016-07-20 02:00:32
【问题描述】:

我是MultipeerConnectivity 的新手,当我实现自定义sendData 函数时,它显示Cannot invoke 'sendData' with an argument list of type '(NSData,toPeer:NSArray,withMode:MCSessionSendDataMode',error:inout NSError?)

如何解决:

func sendData(dataToSend:dataSend,toPeer: MCPeerID)->Bool{
    let dataToSend = NSKeyedArchiver.archivedDataWithRootObject(dataToSend)
    let peerArray = NSArray(object: toPeer)
    var error:NSError?

    let arr = [MCPeerID]()
//this line shows error
    if !self.session!.sendData(dataToSend, toPeers: peerArray, withMode: MCSessionSendDataMode.Reliable, error: &error) {

    }
}

【问题讨论】:

  • 你使用的是什么版本的 Swift?

标签: ios swift multipeer-connectivity


【解决方案1】:
if !self.session!.sendData(dataToSend, toPeers: peerArray, withMode: MCSessionSendDataMode.Reliable, error: &error) {

}

此方法在 Swift 2.x 中不返回布尔值

这是 Apple 文档中的方法

func sendData(_ data: NSData,
      toPeers peerIDs: [MCPeerID],
     withMode mode: MCSessionSendDataMode) throws

这意味着你必须这样做

do {
    try self.session!.sendData(dataToSend, toPeers: peerArray, withMode: MCSessionSendDataMode.Reliable)
    print("success")
    // do something
} catch {
    print("failure")
    // do something else
}

在 Swift 2 和 Xcode 7.3.1 上测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多