मैं बहुत सारे एसिंक नेटवर्क अनुरोध का उपयोग कर रहा हूं (आईओएस में किसी भी नेटवर्क अनुरोध को एएसआईएनसी द्वारा की आवश्यकता है) और मुझे ऐप्पल के dataTaskWithRequest
से त्रुटियों को बेहतर तरीके से संभालने का तरीका मिल रहा है जो throws
का समर्थन नहीं करता है।स्विफ्ट 2 में एसिंक बंद करने से त्रुटियों को संभालने का सबसे अच्छा तरीका?
मैं उस तरह कोड है:
func sendRequest(someData: MyCustomClass?, completion: (response: NSData?) ->()) {
let request = NSURLRequest(URL: NSURL(string: "http://google.com")!)
if someData == nil {
// throw my custom error
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
// here I want to handle Apple's error
}
task.resume()
}
मैं अपने संभव कस्टम पार्स त्रुटियाँ और dataTaskWithRequest
से संभावित संबंध त्रुटियों को संभालने की जरूरत है। स्विफ्ट 2 ने throws
पेश किया, लेकिन आप ऐप्पल के बंद होने से फेंक नहीं सकते क्योंकि उनके पास कोई फेंक समर्थन नहीं है और एसिंक चल रहा है।
मुझे अपने पूरा होने वाले ब्लॉक NSError
में जोड़ने का एकमात्र तरीका दिखाई देता है, लेकिन जैसा कि मुझे पता है कि NSError
पुराने शैली का उद्देश्य-सी तरीका है। ErrorType
केवल फेंकने के साथ ही उपयोग किया जा सकता है (afaik)।
ऐप्पल नेटवर्क बंद करने का उपयोग करते समय त्रुटि को संभालने के लिए सबसे अच्छी और सबसे आधुनिक विधि क्या है? जैसा कि मैं समझता हूं किसी भी एसिंक नेटवर्क फ़ंक्शंस में कोई उपयोग नहीं होता है?
आप फेंकता बिना ERRORTYPE उपयोग कर सकते हैं:
अब, आप इसे इस रूप में इस्तेमाल कर सकते हैं। यानी इसे अपने पूरा करने वाले हैंडलर में लौटाना। हो सकता है कि आप यह देखना चाहें कि अलामोफायर प्रतिक्रियाओं/त्रुटियों के साथ कैसे कार्य करता है https: // github।com/Alamofire/Alamofire/ब्लॉब/मास्टर/स्रोत/Result.swift – doschi