Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Parse.com,如何查询包含时间增量(在过去3分钟内处于活动状态)的对象?_Ios_Date_Swift_Parse Platform - Fatal编程技术网

Ios 使用Parse.com,如何查询包含时间增量(在过去3分钟内处于活动状态)的对象?

Ios 使用Parse.com,如何查询包含时间增量(在过去3分钟内处于活动状态)的对象?,ios,date,swift,parse-platform,Ios,Date,Swift,Parse Platform,我正在尝试构建一个解析查询,该查询将在最近3分钟内检索最新的活动用户。无论是使用PFCloud还是仅仅是一个简单的解析查询,我如何实现这一点 首选iOS示例。最简单的方法是创建一个虚拟字段,每次用户处于活动状态时更新该字段。不幸的是,您不能将此字段放在与用户关联的安装或用户对象上,因为这些对象受到保护-除非您使用PFCloud调用来处理它。然而,云代码调用非常昂贵,如果您要经常运行此调用,我建议使用第二个非保护对象类,您可以正常查询该类 创建一个对象类OnlineInfo,包含两个字段。一个字段

我正在尝试构建一个解析查询,该查询将在最近3分钟内检索最新的活动用户。无论是使用PFCloud还是仅仅是一个简单的解析查询,我如何实现这一点


首选iOS示例。

最简单的方法是创建一个虚拟字段,每次用户处于活动状态时更新该字段。不幸的是,您不能将此字段放在与用户关联的
安装
用户
对象上,因为这些对象受到保护-除非您使用PFCloud调用来处理它。然而,云代码调用非常昂贵,如果您要经常运行此调用,我建议使用第二个非保护对象类,您可以正常查询该类

  • 创建一个对象类OnlineInfo,包含两个字段。一个字段是指向用户对象的指针,另一个是带有日期的“lastOnline”字段 按如下方式存储ping:

    - (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 ...
        }
    }
    
    请注意,仅当定义中的“活动用户”是与解析数据库或通过数据库中的关系进行交互的用户时,此方法才有效