2015-06-11 10 views
6

के साथ स्विफ्ट 2 में 'sendAsynchronousRequest' का आह्वान नहीं कर सकता है मैं वर्तमान में स्विफ्ट 2.0 के साथ संगतता के लिए अपने स्विफ्ट 1.2 कोड के कुछ हिस्सों को फिर से लिख रहा हूं। असल में मैं समझ नहीं क्या परिवर्तन करने के लिए "sendAsynchronousRequest" बना रहे हैं - वर्तमान में मेरे सभी अनुरोध विफलएक तर्क सूची

NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in}) 

प्रकार का एक तर्क सूची के साथ आह्वान नहीं किया जा सकता 'sendAsynchronousRequest' '(NSURLRequest, कतार: NSOperationQueue, completionHandler: (NSURLResponse !, NSData !, NSError!) -> शून्य) '

आप किसी भी विचार क्या गलत है है?

उत्तर

6

, sendAsynchronousRequest:queue:completionHandler: के हस्ताक्षर है:

class func sendAsynchronousRequest(request: NSURLRequest, 
    queue: NSOperationQueue!, 
    completionHandler handler: (NSURLResponse!, NSData!, NSError!) -> Void) 
स्विफ्ट 2 और Xcode 7 बीटा के साथ

, तथापि, के हस्ताक्षर sendAsynchronousRequest:queue:completionHandler: बदल गया है और अब है गया है:,

// Note the non optionals, optionals and implicitly unwrapped optionals differences 
class func sendAsynchronousRequest(request: NSURLRequest, 
    queue: NSOperationQueue, 
    completionHandler handler: (NSURLResponse?, NSData?, NSError?) -> Void) 

एक परिणाम के रूप स्विफ्ट 2 और Xcode में बदल जाएगा 7 बीटा, आप करने के लिए अपने completionHandler पा बदलने होगा रैमर कार्यान्वयन और सुनिश्चित करें कि आपका queue पैरामीटर एक गैर वैकल्पिक है।

4

ऐसा लगता है कि समस्या पूर्णता ब्लॉक में आपके निहित अनचाहे विकल्प के साथ है। बस इसे वैकल्पिक बनाने के लिए और यह स्विफ्ट 1.2 और Xcode 6.3 के साथ ठीक काम करना चाहिए,

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse?, data: NSData?, error: NSError?) in 
    let string = NSString(data: data!, encoding: NSISOLatin1StringEncoding) 
    print("Response \(string!)") 
} 
2

NSURLConnection.sendAsynchronousRequest के बाद से उपयोग करना चाहिए आईओएस 9. में हटाई गई है NSURLSessionpublic func dataTaskWithRequest(request: NSURLRequest, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void) -> NSURLSessionDataTask

0

तेज 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 

    } 
संबंधित मुद्दे