Piszę aplikację OS X, i musi istnieć możliwość usunięcia wszystkich instancji "SongEntity" przechowywanych w jego magazynie danych podstawowych. Jednak gdy próbuję wykonać NSBatchDeleteRequest, moje awarie aplikacji, z następującym konsoli-wyjścia (fragment):Aplikacja ulega awarii podczas wykonywania NSBatchDeleteRequest z "Nieznanym typem polecenia <NSBatchDeleteRequest, ..>"
Nieznany typ polecenia (jednostki: SongEntity; kwantyfikatorów: ((null)); sortDescriptors: ((null)); Typ: NSManagedObjectIDResultType;)>
Oto moja realizacja:
func clearStore()
{
let fetchRequest = NSFetchRequest(entityName: "SongEntity")
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do
{
try managedObjectContext.executeRequest(deleteRequest)
}
catch
{
fatalError("Not able to perform operation: \(error)")
}
managedObjectContext.reset()
}
Każda pomoc będzie mile widziane
EDIT: Okazuje się, że ten problem jest związany z wybranym sklepie typu: Od klasy NSBatchDeleteRequest
:
// May not be supported by all store types.
Próbowałem zmieniając sklepu typu z NSXMLStoreType
(domyślny szablon MacOS) do NSSQLiteStoreType
i teraz działa.
"w pewnych okolicznościach"? - Uwaga: NSBatchDeleteRequest wymaga iOS 9. –
Usunąłem to sformułowanie (podziękowania). A zatem NSBatchDeleteRequest nie jest dostępny na OS X ...? Od [Uwagi do wydania El Capitan] (https://developer.apple.com/library/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_11.html) Rozumiem, że NSBatchDeleteRequest _jest_ obsługiwane na El Capitan – Albertsen
Przepraszam, miałem przeoczyłem tag [osx]. Nie wiem, czy jest dostępny na OS X (i od kiedy). –