2015-10-11 2 views
0

Я пытаюсь создать класс под названием NetwortRequests, где я выполняю все свои вызовы в Parse. Попытка выяснить, как получить результаты из этого класса и в класс, где я называю этот метод. Благодаря!Как настроить класс запроса сети в Swift

class NetworkRequests: NSObject { 

    class func retrieveCandidatesWithCompletion(complete: (result: NSArray) -> Void) { 

     let query = PFQuery(className:"Customer") 

     query.findObjectsInBackgroundWithBlock { 
     (objects:[AnyObject]?, error:NSError?) -> Void in 

     if error == nil { 

      // The find succeeded. 
      print("This is object: \(objects)") 

      // populate results 
      complete(result: objects!) 

       } 
      } 

     } else { 

      // Log details of the failure 
      print("Error: \(error!) \(error!.userInfo)") 
     } 
     } 
    } 
} 
+0

В чем проблема, что вы имеют – Lamar

+0

Не могу понять, как получить массив отсюда, чтобы установить другой массив в другом классе. Я вызываю этот метод. Objective C мне легче концептуализировать. – tahoecoop

+0

'query.findObjectsInBackgroundWithBlock { (объекты: [AnyObject] ?, ошибка: NSError?) -> Пустота в ' больше не пригодны для использования, вы должны использовать 'query.findObjectsInBackgroundWithBlock { (объекты: [PFObject] ?, ошибка : NSError?) -> Пустота в ' – Lamar

ответ

0

В новом синтаксического SDK completionHandler Блок не возвращается objects:[AnyObject]?, но они вернулись objects:[PFObject]?. Так попробуйте это:

class NetworkRequests: NSObject 
{ 

    class func retrieveCandidatesWithCompletion(complete: (result: NSMutableArray) -> Void) 
    { 
    let query = PFQuery(className:"Customer") 
    query.findObjectsInBackgroundWithBlock { (objects:[PFObject]?, error:NSError?) -> Void in 
     if error == nil 
     { 
      var dataToExtract:NSMutableArray = [] 
      if let objects = objects 
      { 
       // The find succeeded. 
       print("This is object: \(objects)") 
       // populate results 
       for SingleObject in objects 
       { 
        let username = SingleObject["username"] as! String 
        dataToExtract.addObject(username) 
        complete(result: dataToExtract) 
       } 
      } 
     } 

     else 
     { 
      // Log details of the failure 
      print("Error: \(error!) \(error!.userInfo)") 
     } 
    } 
} 

}

+0

Я на самом деле застрял в этом какое-то время. Это [AnyObject] ?, а не [PFObject] ?. По-видимому, это изменилось с быстрым 2.0. Но моя проблема возникает, потому что я считаю, что я устанавливаю объекты (результаты) в массиве. Затем я хотел установить этот массив в другой массив в контроллере представления, где я хочу использовать эти данные. Я не могу добраться до данных, хотя, мне интересно, если я просто не использую синтаксис быстрого закрытия правильно (у меня гораздо больше опыта с Obj C). – tahoecoop

+0

вы используете parse new sdk – Lamar

+0

В принципе, я правильно вынимаю все данные в классе сетевых запросов, но как я могу использовать эти данные в контроллере просмотра, где я вызываю это retrieveCandidatesWithCompletion :? – tahoecoop

0

Почему вы не составляем протокол делегата (с помощью метода, как receivedAllData (данные: Array) и использовать его в классе NetworkRequests в блоке завершения . Затем вы реализуете делегата в классе viewcontroller, и вы можете его обновить (текстовые поля и т. Д.), Когда блок завершения завершен, и вызывает метод делегата. Делегаты - очень мощный способ отправки данных в ваших проектах. Apple использует их все время также :-)

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