के बाद से मैं भी इस मैं नीचे दिए गए उदाहरण बना कैसे करना है की दिलचस्पी होती है। न केवल स्थिर स्थैतिक गुणों के साथ संरचना बनाएं और एक स्थिर आवृत्ति चर जो संरचना को सिंगलटन बनाता है। निम्न कोड नमूना एक उदाहरण का उपयोग उदाहरण के लिए Person
ऑब्जेक्ट के मैपिंग मानों के लिए एक JSON शब्दकोष को आरईएसटी एपीआई के नामकरण अर्थशास्त्र का उपयोग कर विवरण का उपयोग करता है। PersonJSONKeys
के गुणों के नाम Person
के संपत्ति नामों से मेल खाते हैं।
allProperties()
फ़ंक्शन के लिए कोड How to loop over struct properties in Swift? से आता है। आप इस फ़ंक्शन को आसानी से केवल structs गुणों के मानों को वापस करने के लिए संशोधित कर सकते हैं।
struct PersonJSONKeys: PropertyLoopable {
static let instance: PersonJSONKeys = PersonJSONKeys()
private init() {}
let name = "name"
let firstName = "first_name"
let age = "age"
}
struct Person: PropertyLoopable {
let name = "Doe"
let firstName = "John"
let age = "18"
}
let person = Person()
let personProperties = person.allProperties()
var personJSON: [String:Any] = [:]
for jsonProperty in PersonJSONKeys.instance.allProperties() {
let propertyName = jsonProperty.key
let jsonKey = jsonProperty.value as! String
personJSON[jsonKey] = personProperties[propertyName]
}
Struct के बाद से अब एक सिंगलटन उसके गुण के सभी केवल एक बार initialised हो जाएगा और धागा सुरक्षा अपने स्थिर उदाहरण चर द्वारा दिया जाता है।
मैंने यह कोशिश नहीं की है, लेकिन क्या आप संरचना के _instance_ को मिरर कर रहे हैं, या मेटाटाइप? मुझे लगता है कि स्थिर गुण प्राप्त करने के लिए आपको 'Tree.type' दर्पण करना होगा। –
सुनिश्चित नहीं है कि आपका क्या मतलब है। टाइप, मेरी संरचना में उस संपत्ति नहीं है, लेकिन मैंने इसे आजमाया। मुझे और मुझे कुछ भी नहीं मिला। – mattgabor
क्षमा करें, ठीक है, 'Tree.self' कहा जाना चाहिए था (मैं पूंजी-टी "प्रकार के बारे में सोच रहा था, लेकिन यह टाइपनाम है, मेटाटाइप ऑब्जेक्ट नहीं)। बहुत बुरा है जो काम नहीं करता है। –