斯威夫特2关闭麻烦

时间:2016-05-17 15:07:14

标签: swift imgur

原来我在Swift 2关闭时遇到了一些问题,这是我的问题:

func getImgurHotListWithViralBool(viral:Bool) -> NSArray
{
    IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral,
                                     success:{
                                        (objects:NSArray)  in
//It gives the error here*********
                                     },
                                     failure: {(error:NSError) in

                                     })
}

它给出错误:

  

无法转换类型'(NSArray)的值 - > ()'预期的论点   type'(([AnyObject]!) - > Void)!'

更新 值得庆幸的是, Marco Boschi 帮助我解决了这个问题;

func getImgurHotListWithViralBool(viral:Bool) -> NSArray {
    IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral,
        success: { (objects: [AnyObject]!)  in
            // ...
        }, failure: { (error:NSError) in
            // ...
        })
}

现在错误出现在error:NSError中,即:

  

无法转换类型的值'(NSError) - > ()'预期的论点   type'(([AnyObject]!) - > Void)!'

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您正在使用的函数需要一个闭包,它接受一个AnyObject s([AnyObject]!)的Swift数组作为单个参数,如错误消息中所述,但是你使用的是旧的NSArray并且编译器无法将闭包的类型转换为请求的类型,因此错误,更改下面的代码将解决它。

func getImgurHotListWithViralBool(viral:Bool) -> NSArray {
    IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral,
        success: { (objects: [AnyObject]!)  in
            // ...
        }, failure: { (error:NSError) in
            // ...
        })
}

UPDATE:您获得的第二个错误与之前相同,API需要一个接受隐式解包的AnyObject数组的闭包,但是您提供了一个NSError 1}},您必须将failure的签名更改为

failure: { (error: [AnyObject]!) in
    // ...
}

为了解决它。请务必查看API文档,了解如何从阵列中获取错误。