Ios 使用Parse.com,如何查询包含时间增量(在过去3分钟内处于活动状态)的对象?
我正在尝试构建一个解析查询,该查询将在最近3分钟内检索最新的活动用户。无论是使用PFCloud还是仅仅是一个简单的解析查询,我如何实现这一点Ios 使用Parse.com,如何查询包含时间增量(在过去3分钟内处于活动状态)的对象?,ios,date,swift,parse-platform,Ios,Date,Swift,Parse Platform,我正在尝试构建一个解析查询,该查询将在最近3分钟内检索最新的活动用户。无论是使用PFCloud还是仅仅是一个简单的解析查询,我如何实现这一点 首选iOS示例。最简单的方法是创建一个虚拟字段,每次用户处于活动状态时更新该字段。不幸的是,您不能将此字段放在与用户关联的安装或用户对象上,因为这些对象受到保护-除非您使用PFCloud调用来处理它。然而,云代码调用非常昂贵,如果您要经常运行此调用,我建议使用第二个非保护对象类,您可以正常查询该类 创建一个对象类OnlineInfo,包含两个字段。一个字段
首选iOS示例。最简单的方法是创建一个虚拟字段,每次用户处于活动状态时更新该字段。不幸的是,您不能将此字段放在与用户关联的
安装
或用户
对象上,因为这些对象受到保护-除非您使用PFCloud调用来处理它。然而,云代码调用非常昂贵,如果您要经常运行此调用,我建议使用第二个非保护对象类,您可以正常查询该类
- (void)updateLastOnline
{
PFQuery *query = [PFQuery queryWithClassName:@"OnlineInfo"];
//Store the objectID for the associated OnlineInfo object as a pointer field "onlineInfo" on the User object
[query getObjectInBackgroundWithId:[[PFUser currentUser] objectForKey"onlineInfo"] block:^(PFObject *onlineInfo, NSError *error) {
// Do something with the returned PFObject in the gameScore variable.
[onlineInfo setObject:[NSDate date] forKey:@"lastOnline"];
[onlineInfo saveInBackground];
}];
}
然后,您可以使用带有两个日期的标准PFQuery查询此“安全”对象,您可以在我的帖子中找到:
注意:您可能还希望确保每x分钟调用一次,以防止对您的Parse安装发送垃圾邮件。您每秒可以免费收到30个请求,因此您可能不希望每分钟或每5分钟发送一次以上的请求。以下是一种方法:
// Set a date variable equal to 3 minutes ago
var date = NSDate()
var threeMinutesAgo = date.dateByAddingTimeInterval(-180)
// I'm using the updatedAt column in a User class
let query = PFQuery(className: "_User")
query.whereKey("updatedAt", greaterThanOrEqualTo: threeMinutesAgo)
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil && objects.count > 0 {
// Do something with queried objects ...
} else {
// Some error handling ...
}
}
请注意,仅当定义中的“活动用户”是与解析数据库或通过数据库中的关系进行交互的用户时,此方法才有效