funciones - No se puede invocar ''sendAsynchronousRequest'' en Swift 2 con una lista de argumentos
finished with error code (4)
Parece que el problema está con tus opciones implícitas sin envolver en el bloque de finalización. Simplemente hazlo opcional y debería funcionar bien,
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse?, data: NSData?, error: NSError?) in
let string = NSString(data: data!, encoding: NSISOLatin1StringEncoding)
print("Response /(string!)")
}
Actualmente estoy reescribiendo partes de mi código Swift 1.2 para compatibilidad con Swift 2.0. En realidad, no puedo entender qué cambios se realizan a "sendAsynchronousRequest" - actualmente todas mis solicitudes fallan
NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in})
No se puede invocar ''sendAsynchronousRequest'' con una lista de argumentos de tipo ''(NSURLRequest, queue: NSOperationQueue, completionHandler: (NSURLResponse !, NSData !, NSError!) -> Void)''
¿Tienes alguna idea de lo que está mal?
Con Swift 1.2 y Xcode 6.3, la firma de sendAsynchronousRequest:queue:completionHandler:
es:
class func sendAsynchronousRequest(request: NSURLRequest,
queue: NSOperationQueue!,
completionHandler handler: (NSURLResponse!, NSData!, NSError!) -> Void)
Con Swift 2 y Xcode 7 beta, sin embargo, la firma de sendAsynchronousRequest:queue:completionHandler:
ha cambiado y ahora es:
// Note the non optionals, optionals and implicitly unwrapped optionals differences
class func sendAsynchronousRequest(request: NSURLRequest,
queue: NSOperationQueue,
completionHandler handler: (NSURLResponse?, NSData?, NSError?) -> Void)
Como consecuencia, al pasar a Swift 2 y Xcode 7 beta, tendrá que cambiar la implementación de su parámetro de ejecución de gestor y asegurarse de que su parámetro de queue
no sea opcional.
Dado que NSURLConnection.sendAsynchronousRequest
está en desuso en iOS 9. ¿Debería usar NSURLSession
public func dataTaskWithRequest(request: NSURLRequest, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void) -> NSURLSessionDataTask
veloz 3
let url:URL? = URL(string:location)
if url == nil {
print("malformed url : /(location)")
}
NSURLConnection.sendAsynchronousRequest(URLRequest(url:url!),
queue: OperationQueue.main)
{ (response: URLResponse?, data: Data?, error: Error?) -> Void in
}