2016-02-12 17 views
6

Şu anda orderByAscending siparişi bile yapsam bile, bunu artan bir şekilde yapmaz. Göremediğim sorun nedir? Ben çıktılar çok rastgele olacaktır AyrıştırmaParse kullanarak artan sorguda nasıl sorulur

PFQuery *foodList = [PFQuery queryWithClassName:@"Food"]; 

[foodList whereKey:@"date" greaterThanOrEqualTo:minimumDate]; 
[foodList whereKey:@"date" lessThan:maximumDate]; 
[foodList orderByAscending:@"expiration_date"]; 


[foodList findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 

    }]; 

Örnek

food_name  expiration_date 
Apple   1/2/15 
Banana   1/2/15 
Pear   1/3/15 
Kiwi   1/1/15 

Çıkış

kullanıyorum. Sorgulanırken listenin sıralanmadığını varsayarak kabul ediyorum. Bu sorunu nasıl çözeceğime emin değilim.

+2

çıkış işte sonucu görebiliyor:

Bu bir anahtar ile değil de bir tanımlayıcı kullanarak sıralamak nasıl? –

+0

@AndriyGordiychuk Çıkış rastgele sırada. – user3281743

+0

Buraya koyduğunuz kod çalışıyor mu? Bence siparişinizByAscending sözdizimi dizenin önünde @ eksik. [FoodList orderByAscending: @ "expiration_date"] olmalıdır; – Rufus

cevap

1

Birden çok filtreye eklemeye başladığınızda Parse Query'nin güvenilmez olduğunu gördüm ve bu bir hata olabilir, ancak bunun için fazla bir neden yok gibi görünüyor. Ne yaptım, birden çok filtrem olduğunda, bir NSPredicate.

NSPredicate *minPredicate = [NSPredicate predicateWithFormat:@"date >= %@", minimumDate]; 
NSPredicate *maxPredicate = [NSPredicate predicateWithFormat:@"date < %@", maximumDate]; 
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[minPredicate,maxPredicate]]; 
PFQuery *foodList = [PFQuery queryWithClassName:@"Food" predicate:predicate]; 
[foodList orderByAscending:@"expiration_date"]; 

[foodList findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

}]; 

başka olasılık sorgu tarih için filtreleme ve sonra siz "EXPIRATION_DATE" tarafından sipariş ve ben ikisi arasında bir kopukluk olduğunu olmadığından emin değilim olmasıdır. Nesne isimlendirmesinin istediğin şey olduğundan emin ol.

3

Parse SDK ile sıralama yapmak için NSSortDescriptor varyantını kullanıyorum ve bununla ilgili herhangi bir sorunla karşılaşmadım (aynı zamanda elinizde olduğu gibi birden çok tuşta da filtreleme).

PFQuery *foodList = [PFQuery queryWithClassName:@"Food"]; 

[foodList whereKey:@"date" greaterThanOrEqualTo:minimumDate]; 
[foodList whereKey:@"date" lessThan:maximumDate]; 

NSSortDescriptor *orderBy = [NSSortDescriptor sortDescriptorWithKey:@"expiration_date" ascending:YES]; 
[foodList orderBySortDescriptor:orderBy];