我已经将我的swift版本从2.3迁移到3,它自动转换了一些代码,下面是我遇到崩溃的情况,我尝试了一些选项,但都是徒劳的,
swift 2.3:* 工作正常 *
public func huntSuperviewWithClassName(className: String) -> UIView?
{
var foundView: UIView? = nil
var currentVeiw:UIView? = self
while currentVeiw?.superview != nil{
if let classString = String.fromCString(class_getName(currentVeiw?.dynamicType)){
if let classNameWithoutPackage = classString.componentsSeparatedByString(".").last{
print(classNameWithoutPackage)
if classNameWithoutPackage == className{
foundView = currentVeiw
break
}
}
}
currentVeiw = currentVeiw?.superview
}
return foundView
}
}
雨燕3:不好
if let classString = String(validatingUTF8: class_getName(type(of:currentVeiw) as! AnyClass)) {
也试过这一行:
if let classString = String(describing: class_getName(type(of: currentVeiw) as! AnyClass)){
但它不起作用。
请指导我如何根据swift3:
if let classString = String.fromCString(class_getName(currentVeiw?.dynamicType)){
4条答案
按热度按时间pgccezyw1#
编译器告诉你不能使用
if let
,因为它是完全不必要的。你没有任何可选择的解包。if let
专门用于解包可选择的。工作正常!
bttbmeg02#
gc0ot86w3#
只需执行以下操作:
voj3qocg4#
请尝试以下操作: