私のアプリケーションでは、Webサービスからエンティティのコンテンツをリフレッシュするときに、自分のコアデータ内のすべてのレコードを削除し、新しいものをすべて挿入します。しかし、文脈が再び呼び出されたとしても、レコードは文脈から削除されないことが多い。だから私が保存するとき、古いものは残っていて、私はちょうど既存のものの上に積み重なり、重複をたくさん得てしまいます。どのように私は完全にコンテキストをクリアすることができますので、重複について心配する必要はありませんか?NSBatchDeleteRequestの後のコアデータの使用
var appDelegate = UIApplication.shared.delegate as! AppDelegate
var context = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "V_ServiceDetails")
// Clear all
let request = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
let result = try context.execute(request)
} catch {}
appDelegate = UIApplication.shared.delegate as! AppDelegate
context = appDelegate.persistentContainer.viewContext
// Add new ones
for svc in self.svcs {
let result = NSEntityDescription.insertNewObject(forEntityName: "V_ServiceDetails", into: context)
result.setValue(svc.Car_VIN, forKey: "car_VIN")
result.setValue(svc.Cust_Veh_ID, forKey: "cust_Veh_ID")
do { try context.save() } catch {}
}
コンテキスト内のアイテムを削除した後。コンテキスト 'context.save()'を保存しようとすることができます – TheAppMentor
@TheAppMentor私はそれを更新しました: 'do { } result = try context.execute(リクエスト) try context.save() } catch {}'それは何の違いもありませんでした。 –