Skip to content

Instantly share code, notes, and snippets.

@robtimp
Created August 12, 2015 17:59
Show Gist options
  • Save robtimp/e045289ee5bab088f951 to your computer and use it in GitHub Desktop.
Save robtimp/e045289ee5bab088f951 to your computer and use it in GitHub Desktop.
Async issue?
func sendEmail(email: Email, completion: SendEmailCompletionBlock) -> Request {
let fields: JSONDict = [
"first_name" : email.firstName,
"last_name" : email.lastName,
"email_address" : email.emailAddress,
"ip_address" : email.ipAddress,
"vendor_id" : email.vendorID,
"event_date_epoch" : email.eventDateEpoch,
"message" : email.message,
"phone" : email.phoneNumber
]
let jsonData = NSJSONSerialization.dataWithJSONObject(fields, options: .allZeros, error: nil)!
let payload = NSString(data: jsonData, encoding: NSASCIIStringEncoding)!
let parameters: JSONDict = [
"partner_key" : kApiKey,
"payload" : payload
]
// This works
return APIManager.performRequest(queue: nil, method: .GET, version: .V3, path: "OpenCreateVendorLead", parameters: parameters, completion: { (data, error) -> Void in
dispatch_async(dispatch_get_main_queue()) {
if error != nil {
completion(success: false, error: error)
} else {
completion(success: true, error: nil)
}
}
})
// This doesn't:
// Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
return APIManager.performRequest(queue: nil, method: .GET, version: .V3, path: "OpenCreateVendorLead", parameters: parameters, completion: { (data, error) -> Void in
Async.main {
if error != nil {
completion(success: false, error: error)
} else {
completion(success: true, error: nil)
}
}
})
// And this doesn't either
return APIManager.performRequest(queue: nil, method: .GET, version: .V3, path: "OpenCreateVendorLead", parameters: parameters, completion: { (data, error) -> Void in
Async.main({ () -> Void in
if error != nil {
completion(success: false, error: error)
} else {
completion(success: true, error: nil)
}
})
})
}
@pt-arvind
Copy link

After investigation, this was determined to be an issue with implicit returns being contained in a block that expects to return void.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment