Function produces expected type '(() -> ())?'; did you mean to call it with '()'?
我收到上述错误。 Xcode 的自动修复没有帮助。
错误在 self.performOnCommunicationQueue()
上:
func getAuthParams(authClosure:((error:NSError?) -> ())?) {
logDebug("Starting sync session with Max device")
if let statusError = self.assertReady() {
logError("Start sync session failed with error: \(statusError)")
if (authClosure != nil) {
authClosure!(error: statusError)
}
} else {
self.performOnCommunicationQueue() {
let error:NSError?
// Set random starting byte
let oAbsTime:[UInt64] = [mach_absolute_time()]
let payload:NSData = NSData(bytes: oAbsTime, length: 8)
let absTime:UInt8 = UnsafePointer<UInt8>(payload.bytes).memory
self.randomCryptoByte = (0x01 | ( absTime & 0xfe))
}
}
func sendAuthChallenge(authChal:String, completion:((error:NSError?) -> ())?) {
}
func performOnCommunicationQueue(closure:(()->())?){
if (closure != nil)
{
self.communicationQueue?.addOperationWithBlock(closure!)
}
}
最佳答案
我想这就是你想要的:
self.performOnCommunicationQueue({ () -> () in
let error:NSError?
// Set random starting byte
let oAbsTime:[UInt64] = [mach_absolute_time()]
let payload:NSData = NSData(bytes: oAbsTime, length: 8)
let absTime:UInt8 = UnsafePointer<UInt8>(payload.bytes).memory
self.randomCryptoByte = (0x01 | ( absTime & 0xfe))
})
这会创建 performOnCommunicationQueue
所需的 void to void 闭包。
此外,在您进行此更改后,请检查您的大括号是否匹配,我认为您可能还不够,这就是为什么自动完成没有帮助的原因。
关于ios - 函数产生预期类型 '(() -> ())?' ;你的意思是用 '()' 来调用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32789379/