2012-02-12 14 views
6

UITableView'a yüklediğim UIManagedDocument kullanılarak oluşturulan bir Çekirdek Veri veritabanım var ve bu verilerin belirli bir grafiğini grafiğe çiziyorum. Veritabanına bir nesne eklediğimde veya veritabanından bir nesneyi sildiğimde ve daha sonra verileri getirdiğimde, istekte bir sıralama tanımlamam olsa bile NSFetchRequest döndürdüğüm dizinin sıralanmadığını buldum. İlginç olan kısım, eğer birkaç saniye beklediğimde veriyi getirip/kaydettiğimde, şimdi sıralamaya giriyor olmasıdır. Sanırım yanlış bir şey yapmalıyım. Veritabanı Değişiminin tamamlandığını bilmek için Çekirdek Veri'den kullanmam gereken bir tür geri arama var mı? Bu garip çünkü tüm veriler her zaman veritabanında, sadece sıralanmıyor. Onunla çok deneyimli değilim, emin değilim.Çekirdek Verisi NSFetchRequest, nesne silme ve yeniden veriyi silme işleminden sonra sıralanmamış dizi döndürür

İşte benim getirme isteğinden kod:

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"FuelPurchase"]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateTimeStamp" ascending:YES]; 
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 

NSError *error = nil; 
[self.fuelPurchaseDatabase.managedObjectContext executeFetchRequest:request error:&error]; 
+1

İçeriği silme ve yeniden getirme arasında kaydetmeyi deneyin. – Costique

+0

Benim commitEditingStyle: yöntemindeki silme çağrısından hemen sonra kaydediyorum. Veritabanına bir nesne eklediğimde ve çok hızlı bir şekilde çizip grafiğini çizersem, aynı sorunun sıralanmadığı yerde olduğunu fark ettim. – Jamie

+0

Yeniden getirirken "NSFetchRequest" nesnesini yeniden kullanıyor musunuz? Bir önbelleğe alma sorunu gibi görünüyor. – Costique

cevap

0

Eğer controllerDidChangeContent: geri arama kullanıyor musunuz? Belki de bağlamınızı kaydettikten sonra yordamınızı yapmak yerine görünümünüzü güncelleştirmek için bunu kullanabilirsiniz.

+0

Bunu deneyebilirim, ancak bir FetchedResultsController (farklı bir görünümde) bile ayarlamadan önce veritabanına bir nesne ekler ve tablo ve grafiği çok hızlı yüklerseniz, aynı zamanda sıralanmaz. – Jamie

İlgili konular