为什么参数不作为ViewController传递?

时间:2016-05-25 00:26:54

标签: ios swift viewcontroller

我正在尝试将ViewController作为参数传递,但我一直收到此错误。我不确定为什么会发生错误。任何帮助表示赞赏。 enter image description here

class Major: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource{

let initial = json.finddetailclass(self as ViewController, predicate: predicate)

 }

func finddetailclass(viewclass: Major, @noescape predicate: JSON -> Bool) -> JSON? {

    if predicate(self) {
        return self
    }
    else {
        if let subJSON = (dictionary?.map { $0.1 } ?? array) {
            for json in subJSON {

                if let foundJSON = json.findmultiple(viewclass as UIViewController //this is where I get the error, predicate: predicate) {
                    let shorten = foundJSON["html"].stringValue
                    print(shorten)

                }

            }


        }
    }
    return nil
}

2 个答案:

答案 0 :(得分:0)

你应该贬低自我。尝试:

json.findmultiple(viewclass as UIViewController,predicate:predicate)

它与Swift cast self in class func

有关

答案 1 :(得分:0)

如果您想将ViewController作为参数传递,请使用此类型作为其参数类型[AnyObject]。

AnyObject喜欢Objective-C中的id。你可以理解它是指针的任何类型的对象。

func finddetailclass(viewclass:AnyObject,@ noescape predicate:JSON - > Bool) - > JSON? ......

然后,当您使用此对象时,可以将视图类转换为实际类型的对象。