根据与 Float 的差异对解析查询进行排序

Sort Parse Query based on difference with Float

我想根据从字段 temperature 到我的变量 referenceTemp

的标量距离对我的解析查询结果进行排序

我试了下面的,当然不行,但是说明了我的意图

var referenceTemp = 47.89
var query = PFQuery(className: "Temperatures")
query.orderByAscending("abs(temperature - referenceTemp)")

我该怎么做? 谢谢!!

您不能在数据库级别执行此操作...但您可以使用两个查询来执行此操作:

var referenceTemp = 47.89
var query = PFQuery(className: "Temperatures")
query.greaterThan(referenceTemp);
query.orderByAscending();
query.findObjectsInBackgroundWithBlock {
  (objects: [AnyObject]?, error: NSError?) -> Void in

  if error == nil {
    // The find succeeded.
    println("Successfully retrieved \(objects!.count) scores.")
    // Do something with the found objects
    if let objects = objects as? [PFObject] {
      for object in objects {
        //Get the scalar distance for each, store
      }
    }
  } else {
    // Log details of the failure
    println("Error: \(error!) \(error!.userInfo!)")
  }
}

query.lessThan(referenceTemp);
query.orderByDescending();
query.findObjectsInBackgroundWithBlock...

一旦你有了最近的上方和下方,以及它们的标量距离,你就可以使用散列或 NSDictionary,其中包含标量距离和对象值的键。根据需要订购,只需 2 个查询即可满足您的要求。