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আরো একটি প্রোগ্রামার বান্ধব সংস্করণের জন্য
যদি শ্রেণীর পরিবর্তে কাঠামো ব্যবহার করা সম্ভব হয় তবে অতিরিক্ত কিছু করার নেই।
কাঠামো আউটপুট থেকে নিজেকে সূক্ষ্ম মুদ্রণ
print("\(yourStructInstance)")
বা এই জাতীয় ক্লাস সহ:
print(String(describing: yourClassInstance))
আপনার ব্যবহার করা উচিত String(obj)।
কাস্টমস্ট্রিং কনভার্টেবলের জন্য ডকুমেন্টেশন থেকে সরাসরি :
বিঃদ্রঃ
স্ট্রিং (উদাহরণস্বরূপ) যে কোনও ধরণের উদাহরণের জন্য কাজ করবে, উদাহরণটি কাস্টমস্ট্রিংকনভার্টেবল হিসাবে ঘটলে এর বিবরণটি ফিরিয়ে দেয়। কাস্টমস্ট্রিংকনভার্টেবলকে জেনেরিক সীমাবদ্ধতা হিসাবে ব্যবহার করা, বা সরাসরি মেনে চলার ধরণের বিবরণ অ্যাক্সেস করা নিরুৎসাহিত করা হয়।
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বর্গ মধ্যে "CountryPicker আইওএস সুইফট গ্রন্থাগার" ।
অথবা, আপনার বোঝার পক্ষে এটি আরও সহজ করার জন্য আপনার শ্রেণি এবং 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এটি অর্জনের বেশিরভাগ খাঁটি সুইফট উপায়।