【发布时间】:2017-08-04 04:02:45
【问题描述】:
在将我的 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()
}
【问题讨论】:
-
你为什么一直将
infoDict转换为AnyObject?而且,就此而言,为什么使用object(forKey:)而不仅仅是["key"]? -
你的
infoDict是什么类型的? -
AnyObject在 Swift 3 中总是很糟糕。关心真正的类型