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

How to set up Network Request Class in Swift

我正在尝试设置一个名为 NetwortRequests 的 class,我在其中执行对 Parse 的所有调用。试图弄清楚如何从这个 class 中获取结果并进入我调用此方法的 class 中。谢谢!

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

在新的解析 SDK 中,completionHandler 块没有 return objects:[AnyObject]?,但它们 returned 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)")
        }
    }
}

}

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