मैं रिमोट अधिसूचना के उपयोगकर्ता इन्फ्लो डिक्शनरी से बैज वैल्यू निकालने का प्रयास कर रहा हूं। मैंने कई पोस्ट पढ़ी और मेरी समस्या का हल पाया लेकिन मैं बहुत संतुष्ट नहीं हूं!स्विफ्ट: '(एनएसओब्जेक्ट, एनीऑब्जेक्ट)' में 'सबस्क्रिप्ट' नामक सदस्य नहीं है
तो यहाँमेरी डेटा संरचना (मैं बेकार लाइनों से हटाया) है: { aps = { badge = 7 } }
मेरी userInfo
से बाहर इस संख्या को निकालने के लिए '7' मैं निम्नलिखित करना चाहते हैं:
self.updateAppIcon(userInfo["aps"]["badge"] as? Int)
लेकिन
स्विफ्ट:: जाहिर है मैं निम्नलिखित त्रुटि मिलती है '(NSObject, AnyObject)' एक सदस्य नामित किया गया है नहीं है 'सबस्क्रिप्ट'
यदि मैं गलत नहीं हूं, तो ऐसा इसलिए है क्योंकि []
कोई भी ऑब्जेक्ट देता है जिसे किसी अन्य शब्दकोश के रूप में नहीं समझा जा सकता है।
एक काम कर समाधान निम्न करने के लिए होगा:
func handleRemoteNotifiation(userInfo: [NSObject : AnyObject]) {
if let aps: AnyObject = userInfo["aps"] {
if let apsDict = aps as? [String : AnyObject]{
if let badge: AnyObject = apsDict["badge"] {
self.updateAppIconBadgeNumber(badge as? Int)
}
}
}
}
func updateAppIconBadgeNumber(number: Int?) {
// do stuff here
}
लेकिन एक और अधिक सेक्सी रास्ते में गंभीरता से ... मैं इसे कर सकता है? कम लाइनें, अगर खंड, कम रहता है, आदि कम? यह एक आसान चीज़ का "कोड-कॉम्प्लेक्स" समाधान है।
धन्यवाद
बहुत बहुत धन्यवाद!मुझे इस "वैकल्पिक चेनिंग" के बारे में कोई जानकारी नहीं थी। आपके दोनों समाधान और लिंक के लिए धन्यवाद! –