斯威夫特3 RKObjectRequestOperation返回错误无法类型RKObjectRequestOperation的转换
我试图代码从现有的应用程序转换为SWIFT 3(Xcode中8.1),但我被困在下面的代码给错误:斯威夫特3 RKObjectRequestOperation返回错误无法类型RKObjectRequestOperation的转换
cannot convert value of type (RKObjectRequestOperation!, RKMappingResult!) -> Void to expected argument type (RKObjectRequestOperation?, RKMappingResult?) -> Void!)
这里是我的代码:
class func getShoppingItemsForPage(_ page: Int,pageSize: Int,
completionHandler:@escaping ([ShopItemModel]?,NSError?) ->()) {
RKObjectManager.sharedManager().getObjectsAtPath("search",
parameters: ["page" : page, "pagesize" : pageSize], success: { (request: RKObjectRequestOperation!, result: RKMappingResult!) -> Void in
let resultArray = result.array() as? [ShopItemModel]
completionHandler(resultArray,nil)
}) { (request: RKObjectRequestOperation!, error: NSError!) -> Void in
completionHandler(nil,error)
}
}
我怀疑这可能与从FBSDKLoginManager类似的错误在那里我看到
Cannot convert value of type (FBSDKLoginManagerLoginResult!, NSError!) -> Void to expected argument type "FBSDKLoginManagerRequestTokenHandler!"
以下是产生错误的Facebook代码。
loginManager.logIn(withReadPermissions: facebookReadPermissions, from: self, handler: {(result:FBSDKLoginManagerLoginResult!,error:NSError!) -> Void in
if error != nil {
// Process Error
}
else if result.isCancelled {
// Cancelled by User
}
else {
let delegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
delegate.showMainStoryboard()
}
})
class func getShoppingItemsForPage(_ page: Int,pageSize: Int,
completionHandler:@escaping ([ShopItemModel]?,NSError?) ->()) {
RKObjectManager.sharedManager().getObjectsAtPath("search",
parameters: ["page" : page, "pagesize" : pageSize],
success: {(operation: RKObjectRequestOperation!, mappingResult: RKMappingResult!) -> Void in
let resultArray = mappingResult.array() as? [ShopItemModel]
completionHandler(resultArray,nil)
}, failure: {(operation: RKObjectRequestOperation!, error: NSError!) -> Void in
completionHandler(nil,error)
})
}
这没有奏效。有2个错误,如果我改变到上面,第4行仍然有相同的错误。如果我将第4行更改为有问号,那么您确定的代码有错误。 – markhorrocks
我的更新答案有效吗? – zombie
不,我在成功之后得到同样的错误:' – markhorrocks
解决的办法是从NSError更改错误类型错误,并拨打电话,并导致PARAMS可选。
这可能有助于https://github.com/ekreative/testbuild-rocks-ios/blob/master/AppsV2/AVRequestHelper.swift – zombie