如何在Swift中设置网络请求类

时间:2015-10-11 15:30:12

标签: ios swift closures

我正在尝试建立一个名为NetwortRequests的类,我在那里调用Parse。试图弄清楚如何从这个课程中得到结果,并进入我调用此方法的课程。谢谢!

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)")
         }
      }
   }
}

2 个答案:

答案 0 :(得分:0)

在新的解析SDK中,completionHandler Block不会返回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)")
        }
    }
}

}

答案 1 :(得分:0)

为什么不创建委托协议(使用receiveAllData(data:Array)之类的方法,并在完成块的NetworkRequests类中使用它。 然后,您可以在viewcontroller类中实现委托,并在完成块完成时更新它(文本字段等)并调用委托方法。 代表是在项目中发送数据的一种非常强大的方式。 Apple也一直使用它们: - )