SORU
5 EYLÜL 2009, CUMARTESİ


Çekirdek Veri: Hızlı bir işletmenin tüm örneklerini silmek için yol

Çekirdek Veri yerel olarak Web Hizmetleri arama sonuçları kalıcı olması için kullanıyorum. Web hizmeti verir tam nesne modeli için, diyelim ki, "Araba" - olabilir 2000 (ve ben yapamam Web Servis dönüş her şey, 1'den küçük veya TÜM arabalar.

Bir dahaki sefer ben açık başvurum istiyorum yenileme karot Verileri kalıcı kopya tarafından arama Web Hizmeti için tüm Arabalar yine, ancak önlemek için çiftleri istiyorum ihtiyacı Temizle tüm verileri yerel önbellek ilk.

Orada kolay bir yolu Temizle TÜM örneklerin belirli bir varlık olarak yönetilen nesne bağlamı (örneğin, tüm varlıkların yazın "ARABA") ya da yapmam gereken sorgu onları aramak, zaman içinde yineleme sonuçlarını silmek için, her, sonra kaydetmek?

İdeal sadece varlık Vesaire tüm silmek için de söyleyebilirim.

CEVAP
5 EYLÜL 2009, CUMARTESİ


iOS 9 ve üstü:

iOS 9 yeni bir sınıf nesneler tüm hafıza için bunları yüklemek zorunda kalmadan bir yüklem eşleşen silmek için izin NSBatchDeleteRequest adlı ekledi. Bunu kullanmak istiyorum:

Swift 2

let fetchRequest = NSFetchRequest(entityName: "Car")
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

do {
    try myPersistentStoreCoordinator.executeRequest(deleteRequest, withContext: myContext)
} catch let error as NSError {
    // TODO: handle the error
}

Objective-C

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Car"];
NSBatchDeleteRequest *delete = [[NSBatchDeleteRequest alloc] initWithFetchRequest:request];

NSError *deleteError = nil;
[myPersistentStoreCoordinator executeRequest:delete withContext:myContext error:&deleteError];

Toplu silme hakkında daha fazla bilgi "What's New in Core Data" session from WWDC 2015 (~14:10'da başlayıp) bulunabilir.

iOS ve önceki 8:

Onları ve hepsini: . tümünü sil getir

NSFetchRequest *allCars = [[NSFetchRequest alloc] init];
[allCars setEntity:[NSEntityDescription entityForName:@"Car" inManagedObjectContext:myContext]];
[allCars setIncludesPropertyValues:NO]; //only fetch the managedObjectID

NSError *error = nil;
NSArray *cars = [myContext executeFetchRequest:allCars error:&error];
[allCars release];
//error handling goes here
for (NSManagedObject *car in cars) {
  [myContext deleteObject:car];
}
NSError *saveError = nil;
[myContext save:&saveError];
//more error handling here

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • lifeisforsharingDT

    lifeisforsha

    18 Mayıs 2011
  • Motor Trend Channel

    Motor Trend

    11 Mart 2006