Swift 2 关闭问题
Swift 2 Closure troubles
原来我在 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
})
}
它给出错误:
Cannot convert value of type '(NSArray) -> ()' to expected argument
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
即:
Cannot convert value of type '(NSError) -> ()' to expected argument
type '(([AnyObject]!) -> Void)!'
我该怎么办?
您正在使用的函数需要一个闭包,该闭包接受一个 Swift 数组作为单个参数,一个隐式展开的 AnyObject
s ([AnyObject]!
) 数组,如中所述错误消息,但是您使用的是旧的 NSArray
并且编译器无法将您的闭包类型转换为请求的类型,因此出现错误,如下更改代码即可解决。
func getImgurHotListWithViralBool(viral:Bool) -> NSArray {
IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral,
success: { (objects: [AnyObject]!) in
// ...
}, failure: { (error:NSError) in
// ...
})
}
更新: 你得到的第二个错误和以前一样,API 想要一个接受隐式展开的 AnyObject
s 数组的闭包但是你提供一个带 NSError
的签名,你必须将 failure
的签名更改为
failure: { (error: [AnyObject]!) in
// ...
}
为了解决。请务必查看 API 的文档以了解如何从数组中获取错误。
原来我在 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
})
}
它给出错误:
Cannot convert value of type '(NSArray) -> ()' to expected argument 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
即:
Cannot convert value of type '(NSError) -> ()' to expected argument type '(([AnyObject]!) -> Void)!'
我该怎么办?
您正在使用的函数需要一个闭包,该闭包接受一个 Swift 数组作为单个参数,一个隐式展开的 AnyObject
s ([AnyObject]!
) 数组,如中所述错误消息,但是您使用的是旧的 NSArray
并且编译器无法将您的闭包类型转换为请求的类型,因此出现错误,如下更改代码即可解决。
func getImgurHotListWithViralBool(viral:Bool) -> NSArray {
IMGGalleryRequest.hotGalleryPage(0, withViralSort: viral,
success: { (objects: [AnyObject]!) in
// ...
}, failure: { (error:NSError) in
// ...
})
}
更新: 你得到的第二个错误和以前一样,API 想要一个接受隐式展开的 AnyObject
s 数组的闭包但是你提供一个带 NSError
的签名,你必须将 failure
的签名更改为
failure: { (error: [AnyObject]!) in
// ...
}
为了解决。请务必查看 API 的文档以了解如何从数组中获取错误。