/ / दायरे उदाहरण निर्माण की विफलता को कैसे संभालें? - आईओएस, स्विफ्ट, दायरे

दायरे उदाहरण निर्माण की विफलता को कैसे संभालें? - आईओएस, स्विफ्ट, दायरे

मैं नीचे दिखाए गए वैश्विक क्षेत्र वस्तु को स्थापित करने की कोशिश कर रहा हूं:

do {
self.realm = try Realm(configuration: baseConfig)
} catch {
fatalError("Error occurred while trying to initialise realm (error)")
}

हालांकि, घातक हर बार अक्सर बुलाया जा रहा है। दायरे के दस्तावेज के अनुसार यह अप्रत्याशित नहीं है और मुझे पकड़ में त्रुटि को संभालने में सक्षम होना चाहिए।

किसी भी डिस्क I / O ऑपरेशन की तरह, एक दायरे बनानासंसाधनों को बाधित होने पर उदाहरण कभी-कभी असफल हो सकता है। व्यावहारिक रूप से, यह केवल पहली बार हो सकता है जब किसी दिए गए धागे पर एक वास्तविक उदाहरण बनाया गया हो।

मैं इस तरह कुछ ऐसा करने की सोच रहा हूं जहां मैं बस दूसरी बार पुनः प्रयास करता हूं।

do {
self.realm = try Realm(configuration: baseConfig)
} catch {
do {
self.realm = try Realm(configuration: baseConfig)
} catch {
fatalError("Error occurred while trying to initialise realm (error)")
}
}

मेरा सवाल यह है कि अगर यह गारंटी दी जाती है कि एक वास्तविक उदाहरण बनाना केवल थ्रेड पर एक बार विफल हो सकता है, तो क्यों नहीं रियम खुद को पुनः प्रयास करें?

क्या रीयल ऑब्जेक्ट को प्रारंभ करने का कोई मानक तरीका है यदि यह पहली बार विफल हो जाता है?

उत्तर:

जवाब के लिए 0 № 1
 func createDB ()

{
do {
self.realm = try Realm(configuration: baseConfig)
} catch {

if(counter < 3)
{
self.createDB()

counter = counter + 1
}
else
{
fatalError("Error occurred while trying to initialise realm (error)")
}

}


}