2016-10-04 20 views
10

Swift 1.5'te bir projem var.Swift 3 üye 'abonesi' için belirsiz başvuru

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) 
} 

hata

üye subscript için Muğlak referans

: Ben hızlı 3,0 kod dönüştürülmüş zaman aşağıdaki kodu her 'eğer' deyiminde bana hataları gösteren başladı

StackOverflow'da bulunan çözümleri denedim, ancak şans yok. Lütfen yol göster.

cevap

20

, [NSObject : AnyObject] için [String : AnyObject] olarak değiştirin. Bu, tüm ConnectionMessage.xxxKey değerlerinin String olduğunu varsayar.

Ayrıca, userInfo parametresine ilettiğiniz sözlüğün aslında String türünde anahtarların bulunduğu bir sözlük olduğundan emin olmanız gerekir.

+0

Teşekkürler. Anladım. Daha önceki hızlı sürümlerinde neden çalıştığını açıklayabilir misiniz ve neden şimdi çalışmıyor? – Yogi

+0

Sadece Swift'i 3.0 ile öğrendim, bu yüzden eski sürümlerde nasıl kullanıldığını bilmiyorum. – rmaddy