我正在尝试取消查询并在没有连接时为用户设置通知。有没有比我发现的更好的方法呢?在警报发生之前,查询仍会运行大约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()
}
}
答案 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
,您可以向用户显示消息并跳过查询。