錯誤

2017-08-03 23 views
0

我的SWIFT代碼轉換爲SWIFT 3之後我得到了以下錯誤:錯誤

(AnyObject不是UIFontDescriptor的亞型)在我的代碼

public init(controller : UIViewController) { 
    super.init() 

    addResponderFromView(controller.view) 
} 

deinit { 

    for infoDict in textFieldInfoCache { 

     let view : AnyObject = (infoDict as AnyObject).object(forKey: kIQTextField)! 

     if let textField = view as? UITextField { 

      let returnKeyTypeValue = infoDict[kIQTextFieldReturnKeyType] as! NSNumber 
      textField.returnKeyType = UIReturnKeyType(rawValue: returnKeyTypeValue.intValue)! 

      textField.delegate = infoDict[kIQTextFieldDelegate] as! UITextFieldDelegate? 
     } else if let textView = view as? UITextView { 

      textView.returnKeyType = UIReturnKeyType(rawValue: (infoDict[kIQTextFieldReturnKeyType] as! NSNumber).intValue)! 

      let returnKeyTypeValue = infoDict[kIQTextFieldReturnKeyType] as! NSNumber 
      textView.returnKeyType = UIReturnKeyType(rawValue: returnKeyTypeValue.intValue)! 

      textView.delegate = infoDict[kIQTextFieldDelegate] as! UITextViewDelegate? 
     } 
    } 

    textFieldInfoCache.removeAllObjects() 
} 

請看看圖片。任何想法如何解決這個問題? enter image description here

+0

你爲什麼要繼續將'infoDict'轉換爲'AnyObject'?而且,爲此,爲什麼使用'object(forKey:)'而不是'[「key」]''? – NRitH

+0

你的'infoDict'是什麼類型? – NRitH

+0

AnyObject在Swift 3中總是非常糟糕。關心真實類型 – vadian

回答

0

我的猜測是,在Swift 3中,UIFontDescriptor是一個結構體。

結構是一個值類型,而不是對象類型。 (Any,而不是AnyObject。)嘗試將其轉換爲Any而不是AnyObject

+0

如果你的意思是這樣的:let view:Any =(infoDict as AnyObject).object(forKey:kIQTextField)! 它的作品,但其餘部分仍然是紅色:( – Dakata