2016-10-04 4 views
10

프로젝트를 Swift 1.5에 내장했습니다.Swift 3의 'subscript'멤버에 대한 모호한 참조

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에 코드를 변환 할 때 아래 코드에서 각각 '경우'성명에서 나에게 오류를 보여주는 시작

나는 해결책을 찾았습니다. StackOverflow 행운은 없습니다. 안내해주십시오.

답변

20

userInfo[NSObject : AnyObject]에서 [String : AnyObject]으로 변경하십시오. 모든 ConnectionMessage.xxxKey 값이 String이라고 가정합니다.

userInfo 매개 변수로 전달되는 사전이 실제로 String 키의 사전인지 확인해야합니다.

+0

감사합니다. 알았다. 이전 버전의 신속한 버전에서 작동하는 이유와 현재 작동하지 않는 이유를 설명해 주시겠습니까? – Yogi

+0

3.0으로 Swift 만 배웠으므로 이전 버전에서는 어떻게 처리되었는지 알지 못합니다. – rmaddy

관련 문제