2014-10-29 6 views
10

मैं NSURLRequestस्विफ्ट - क्रम प्रतिक्रिया कोड प्राप्त करने के

का उपयोग कर स्विफ्ट में बाकी प्रश्नों का निर्माण कर रहा हूँ में NSHTTPURLResponse को खिन्न NSURLResponse
var request : NSURLRequest = NSURLRequest(URL: url) 

var connection : NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)! 
connection.start() 

मेरा प्रश्न मैं कैसे प्रतिक्रिया है कि लौटा दिया जाता है से बाहर प्रतिक्रिया कोड प्राप्त करने के लिए है:

func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) { 
//... 
} 

एप्पल के अनुसार: NSHTTPURLResponse जो NSURLResponse का एक उपवर्ग है एक स्थिति कोड है, लेकिन मुझे यकीन है कि मेरी प्रतिक्रिया वस्तु खिन्न करने के लिए कैसे तो मैं जवाब कोड देख सकते हैं नहीं कर रहा हूँ।

यह कटौती करने के लिए प्रतीत नहीं होता:

println((NSHTTPURLResponse)response.statusCode) 

धन्यवाद

+2

मुझे लगता है कि यह एक * डाउनकास्ट * है, न कि * अपकास्ट *। –

उत्तर

15

उपयोग वैकल्पिक बाध्यकारी (if let) के साथ एक वैकल्पिक डाली (as?):

func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) { 
    if let httpResponse = response as? NSHTTPURLResponse { 
     println(httpResponse.statusCode) 
    } else { 
     assertionFailure("unexpected response") 
    } 
} 

या एक एक के रूप में -लाइनर

let statusCode = (response as? NSHTTPURLResponse)?.statusCode ?? -1 

जहां स्थिति कोड -1 पर सेट किया जाएगा यदि प्रतिक्रिया HTTP प्रतिक्रिया (जो HTTP अनुरोध के लिए नहीं होनी चाहिए) है।

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