मैंने नेटिव ऐप पर भेजे गए JavaScript संदेशों को हैंडल करने के लिए WKScriptMessageHandler फंक्शन userContentController(WKUserContentController, didReceive: WKScriptMessage) सेट अप किया है। मैं समय से पहले जानता हूं कि संदेश निकाय हमेशा उसी फ़ील्ड के साथ वापस आएगा। मैं WKScriptMessage.body, जिसे Any के रूप में घोषित किया गया है, को एक संरचना में कैसे परिवर्तित करूं?

0
rawbee 24 नवम्बर 2020, 21:46

1 उत्तर

सबसे बढ़िया उत्तर

सुरक्षित प्रकार कास्टिंग के बारे में क्या, उदाहरण के लिए, शब्दकोश?

let body = WKScriptMessage.body
guard let dictionary = body as? [String: String] else { return }

या एक विकल्प के रूप में, आप शरीर को जेसन स्ट्रिंग के रूप में भेज सकते हैं और कोडेबल का उपयोग करके इसे क्रमबद्ध कर सकते हैं।

struct SomeStruct: Codable {
    let id: String
}

guard let bodyString = WKScriptMessage.body as? String,
      let bodyData = bodyString.data(using: .utf8) else { fatalError() }

let bodyStruct = try? JSONDecoder().decode(SomeStruct.self, from: bodyData)
1
Andrew 24 नवम्बर 2020, 20:00