2016-10-04 23 views
10

में सदस्य 'सबस्क्रिप्ट' के लिए संदिग्ध संदर्भ मेरे पास स्विफ्ट 1.5 में निर्मित एक प्रोजेक्ट है।स्विफ्ट 3

convenience init?(userInfo: [NSObject: AnyObject]) { 
    guard let statusString = userInfo[ConnectionMessage.StatusKey] as? String else { 
     return nil 
    } 
    guard let status = ConnectionStatus(string: statusString) else { 
     return nil 
    } 

    guard let connectionId = userInfo[ConnectionMessage.ConnectionIdKey]?.longLongValue else { 
     return nil 
    } 

    var ssid = "" 

    if let newSsid = userInfo[ConnectionMessage.SSIDKey] as? String { 
     ssid = newSsid 
    } 

    var password = "" 
    if let pw = userInfo[ConnectionMessage.PasswordKey] as? String { 
     password = pw 
    } 

    let buyerName = userInfo[ConnectionMessage.BuyerNameKey] as? String 

    self.init(status: status, connectionId: connectionId, ssid: ssid, password: password, buyerName: buyerName) 
} 

त्रुटि

सदस्य सबस्क्रिप्ट को अस्पष्ट संदर्भ

है: जब मैं तेजी से 3.0 करने के लिए कोड परिवर्तित यह प्रत्येक 'अगर' नीचे दिए गए कोड में बयान में मुझे त्रुटियों दिखानी शुरू कर दी

मैंने स्टैक ओवरव्लो पर पाए गए समाधानों की कोशिश की लेकिन कोई भाग्य नहीं। कृपया गाइड करें।

उत्तर

20

userInfo[NSObject : AnyObject] से [String : AnyObject] पर बदलें। यह मानता है कि आपके सभी ConnectionMessage.xxxKey मान String हैं।

आपको यह सुनिश्चित करने की भी आवश्यकता है कि userInfo पैरामीटर में जो शब्दकोष आप पास करते हैं वह वास्तव में String प्रकार की कुंजी के साथ एक शब्दकोश है।

+0

धन्यवाद। समझ गया। क्या आप कृपया बता सकते हैं कि यह तेजी से पिछले संस्करणों में क्यों काम कर रहा था और अब क्यों काम नहीं कर रहा है? – Yogi

+0

मैंने केवल 3.0 के साथ स्विफ्ट सीखा है, इसलिए मुझे नहीं पता कि इसे पुराने संस्करणों में कैसे प्रबंधित किया गया था। – rmaddy