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
এটি অর্জনের বেশিরভাগ খাঁটি সুইফট উপায়।