स्विफ्ट 1.2 में मैं इस है:स्विफ्ट 2 अगर साथ जाने do-कोशिश-पकड़
if let filePath = NSBundle.mainBundle().pathForResource("some", ofType: "txt"),
data = String(contentsOfFile: filePath, encoding: NSUTF8StringEncoding) {
for line in data.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()) {
// Do something
}
} else {
println("some.txt is missing")
}
स्विफ्ट 2 में, मैं अब यह कर सकते हैं, क्योंकि दोनों pathForResource
और contentsOfFile
फेंक कर सकते हैं, साथ ही लौटने optionals। मैं इसे ठीक कर सकते हैं, लेकिन अब यह उल्लेखनीय वर्बोज़ लगता है:
do {
if let filePath = try NSBundle.... {
do {
if let data = try String.... {
for line in data..... {
// Do something
}
} else {
print("Nil data")
}
} catch {
print("contentsOfFile threw")
}
} else {
print("Nil pathForResource")
}
} catch {
print("pathForResource threw")
}
मैं उम्मीद मैं कुछ छूट गया है - किसी भी मदद की सराहना की।
बस मुख्य नोट देखा। मैंने सोचा कि आपके पास 'do' ब्लॉक में एकाधिक 'try' कथन हो सकते हैं। क्या यह संभव नहीं है? – dreamlab
मैंने अभी तक मुख्य नोट नहीं देखा है लेकिन ऐसा लगता है जैसे स्विफ्ट का फीचर सेट लगभग तेजी से बढ़ रहा है। – sbooth
हर बार जब आप 'try' का उपयोग करते हैं तो आपको' पकड़ 'नहीं होना चाहिए। असल में, अधिकांश समय आपको शायद अपवाद नहीं लेना चाहिए, और इसके बजाय उन्हें ऊपर की तरफ प्रचार करना चाहिए। Http://exceptionsafecode.com/ देखें (यह सी ++ के बारे में बात करता है, लेकिन स्विफ्ट के अपवाद मॉडल को देखने के बाद मुझे लगता है कि सिद्धांत स्विफ्ट पर भी लागू होते हैं।) – bames53