【问题标题】:Cannot call value of non-function type '((AnyClass) -> Bool)!'无法调用非函数类型“((AnyClass)-> Bool)!”的值
【发布时间】:2016-12-15 10:00:28
【问题描述】:

这是我的代码。

    let myDeepLinkAction: UAAction = UAAction(block: {(args:UAActionArguments, handler:UAActionCompletionHandler) -> Void in
                            handler(UAActionResult.empty())
                            }, acceptingArguments: {(arguments: UAActionArguments) in

                                if arguments.situation == UASituation.backgroundPush {

                                    return true
                                }
                                return ((arguments.value! as AnyObject).isKind(of: NSString) || (arguments.value! as AnyObject).isKind(of: URL))

                        })

在 swift 版本转换 2.2 到 3.0 之后出现类型错误,请尽可能给我解决方案。

【问题讨论】:

  • 尝试返回 Bool 而不是 void
  • 感谢您的宝贵建议。
  • 告诉我它是否有效?
  • 如果函数empty()存在,请查看文档

标签: ios swift3


【解决方案1】:

我找到了解决办法,很简单

 let myDeepLinkAction: UAAction = UAAction(block: {(args:UAActionArguments, handler:UAActionCompletionHandler) -> Void in
                        handler(UAActionResult.empty())
                        }, acceptingArguments: {(arguments: UAActionArguments) in

                            if arguments.situation == UASituation.backgroundPush {

                                return true
                            }
                            return (arguments.value! is NSString || arguments.value! is URL)

                    })

return (arguments.value! 是 NSString || arguments.value! 是 URL)

【讨论】:

【解决方案2】:

利用 classForKeyedArchiver 属性

例如:如果你想知道一个视图控制器是否属于某个类,使用下面的sn-p

if sampleController.isKind( of : listOfFlowersViewController.classForKeyedArchiver()!)
{

//your success code here

}

【讨论】:

    【解决方案3】:

    我在 xcode 8 中更新到 swift 3 时遇到了这个问题

    for view in subViews {
     if ((view as AnyObject).isKind(of : UIScrollView))
     {
                scrollView = view as? UIScrollView
            }
    

    它显示错误“无法调用非函数类型'((AnyClass) -> Bool)的值!” 然后我添加了这个“classForKeyedArchiver()” 在子视图中查看 {

                   if ((view as AnyObject).isKind(of : 
            UIScrollView().classForKeyedArchiver!))
    
                {
    
                                scrollView = view as? UIScrollView
               }
    

    非常感谢,它对我有用。

    【讨论】:

      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 2020-02-01
      • 2021-01-15
      • 2021-03-30
      • 2016-03-10
      • 2016-09-26
      相关资源
      最近更新 更多