Не удается вызвать «sendData» со списком аргументов типа «(NSData, toPeer: NSArray,»

Я новичок в 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) {

    }
}

person Liyuan Liu    schedule 20.07.2016    source источник
comment
какую версию Swift вы используете?   -  person Asdrubal    schedule 20.07.2016


Ответы (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.

person Asdrubal    schedule 20.07.2016