由于没有网络连接,更快地取消PFQuery

时间:2015-09-03 23:49:16

标签: ios swift parse-platform network-programming pfquery

我正在尝试取消查询并在没有连接时为用户设置通知。有没有比我发现的更好的方法呢?在警报发生之前,查询仍会运行大约15秒。

    let query = Item.query()

    query!.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {
            for object in objects! {
                self.items.append(object as! Item)
                if self.items.count == 35 {
                    break
                }
            }
        } else if error!.code == 100 {
            query?.cancel()
            print("query cancelled")
            let alertController = UIAlertController(title: "Oops", message: "Trouble With Network", preferredStyle: .Alert)
            let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
            alertController.addAction(defaultAction)

            self.presentViewController(alertController, animated: true, completion: nil)

        } else  {
            print("non network Error with query")
        }
        self.tableView.reloadData()
    }
}

1 个答案:

答案 0 :(得分:1)

为什么不在启动查询之前检查Parse是否可达?我总是使用的代码(在Objective-C中,不难将其转换为Swift)如下所示,并使用Reachability框架

#import <SystemConfiguration/SystemConfiguration.h>
#import "Reachability.h"

@property (nonatomic, readonly) int networkStatus;

- (BOOL)isParseReachable {
return self.networkStatus != NotReachable;
}

然后在开始查询之前调用该方法。如果它返回NO,您可以向用户显示消息并跳过查询。