2015-05-06 1 views
0

Я хочу, чтобы отсортировать результаты моего Разбора запроса на основе скалярной расстоянии от поля temperature к моему переменному referenceTempСортировки Анализировать запросы на основе разницы с поплавком

Я попытался следующим, что, конечно, не работает, но это иллюстрирует мое намерение

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

Как это сделать? Спасибо!

+0

Невозможно сделать на уровне базы данных. Я думаю, что единственной альтернативой является получение результатов и применение такого рода в памяти. – danh

+0

Вы хотите получить все результаты или отфильтровать? Просто сортировка по temp ... – Wain

+0

Я бы отфильтровал некоторые из них, но тогда важно, чтобы я получил n элементов с температурой, ближайшей к referenceTemp ... на стороне плюса, где whatKey кажется, что он принимает выражения. – cduguet

ответ

1

Вы не можете сделать это на уровне базы данных ... но вы можете сделать это с двумя запросами:

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 запроса.