2016-11-29 5 views
0

Я пытаюсь преобразовать код из существующего приложения для быстрой 3 (Xcode 8.1), но я застрял на указанный ниже код дает ошибку:Swift 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() 
      } 
     }) 
+0

это может помочь https://github.com/ekreative/testbuild-rocks-ios/blob/master/AppsV2/AVRequestHelper.swift – zombie

ответ

0
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) 
     }) 
    } 
+0

Это не сработало. Есть 2 ошибки, если я перехожу к вышесказанному, строка 4 остается с той же ошибкой. Если я изменяю строку 4, чтобы иметь вопросительные знаки, то код, который вы идентифицировали, имеет ошибку. – markhorrocks

+0

работает ли мой обновленный ответ? – zombie

+0

нет, я получаю ту же ошибку после 'success:' – markhorrocks

0

Решение было изменить тип ошибки из-за ошибки NSError и сделать вызов и привести Params необязательные.

Смежные вопросы