toString()कक्षा उदाहरण की स्थिति को मुद्रित करने के लिए जावा के स्विफ्ट के बराबर क्या है ?
toString()कक्षा उदाहरण की स्थिति को मुद्रित करने के लिए जावा के स्विफ्ट के बराबर क्या है ?
जवाबों:
descriptionसंपत्ति आप के लिए क्या देख रहे है। यह वह प्रॉपर्टी है जो किसी ऑब्जेक्ट वाले वेरिएबल को प्रिंट करते समय एक्सेस की जाती है।
आप descriptionप्रोटोकॉल को अपनाकर CustomStringConvertibleऔर फिर descriptionसंपत्ति को लागू करके अपनी कक्षाओं में जोड़ सकते हैं।
class MyClass: CustomStringConvertible {
var val = 17
public var description: String { return "MyClass: \(val)" }
}
let myobj = MyClass()
myobj.val = 12
print(myobj) // "MyClass: 12"
descriptionजब आप Stringकंस्ट्रक्टर को कॉल करते हैं तो इसका उपयोग किया जाता है :
let str = String(myobj) // str == "MyClass: 12"
यह उदाहरण विवरण तक पहुँचने के लिए अनुशंसित विधि है ( myobj.descriptionयदि कोई वर्ग लागू नहीं करता है तो इसका विरोध नहीं किया जाएगा CustomStringConvertible)
String(obj)?
.debugDescriptionएक और अधिक प्रोग्रामर के अनुकूल संस्करण के लिए
आपको उपयोग करना चाहिए String(obj)।
CustomStringConvertible के लिए प्रलेखन से प्रत्यक्ष :
ध्यान दें
स्ट्रिंग (उदाहरण) किसी भी प्रकार की आवृत्ति के लिए काम करेगा, यदि विवरण होता है तो इसका विवरण कस्टमस्ट्रीमिंगकॉनवर्टेबल होगा। एक सामान्य बाधा के रूप में CustomStringConvertible का उपयोग करना, या एक अनुरूप प्रकार के विवरण को सीधे एक्सेस करना, इसलिए हतोत्साहित किया जाता है।
description()विधि की तरह लगता CustomStringConvertibleहै पर्याप्त होगा।
NSObjectविस्तारित कक्षाओं के साथ कैसे किया जाता हैयदि आपका मॉडल वर्ग इससे बढ़ाया गया है NSObject, तो आपको चर descriptionको इस प्रकार से ओवरराइड करना होगा :
public override var description: String {
return "\n{\n index: \(self.index),\n"
+ " country: \(self.name),\n"
+ " isoCountryCode: \(self.isoCountryCode),\n"
+ " localeId: \(self.localeId),\n"
+ " flagImageName: \(self.flagImageName!)\n}"
}
आप यह देख सकते हैं कि मैंने इसे "कंट्रीपिकर आईओएस स्विफ्ट लाइब्रेरी" में कक्षा के भीतरCountry कैसे किया है । ।
या, इसे समझने के लिए आपको सरल बनाने के लिए, आपकी कक्षा और descriptionविधि निम्न प्रकार दिखनी चाहिए:
public class MyClass: NSObject {
public var memberAttribute = "I'm an attribute"
public override var description: String {
return "My Class member: \(self.memberAttribute)"
}
}
नोट:
चूंकि आप अपनी मोडल क्लास का विस्तार कर रहे हैं, इसलिए आपको NSObjectअपनी क्लास के लिए CustomStringConvertibleअब क्लास का पालन करने की आवश्यकता नहीं है, और आप क्लास से ही descriptionवेरिएबल को ओवरराइड कर रहे हैं NSObject। हमेशा याद रखें, CustomStringConvertibleइसे प्राप्त करने का ज्यादातर शुद्ध स्विफ्ट तरीका है।