作者:小麻雀yuuri | 来源:互联网 | 2023-05-19 19:51
所以我有一个实体,我将其视为iOS8 XCODE和SWIFT中的简单数据库表.我想删除表中的每个条目.永久性.因此,当我再次启动应用程序时,他们不会重新加载.这是我的代码.
func deleteAllItems(){
println("All Items are being DELETED")
var count:Int = 0
while (HBCContactList.count > 0){
let AppDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let MOContext: NSManagedObjectCOntext= AppDel.managedObjectContext!
MOContext.deleteObject(HBCContactList[0] as NSManagedObject)
HBCContactList.removeAtIndex(0)
var error:NSError? = nil
if !MOContext.save(&error){
abort()
}
tableView.reloadData()
}
它看起来像加载.当它在屏幕上完成时,UITableView中没有任何内容,一切都很好.但是,如果我编写代码以通过fetch语句返回实体并对记录数进行计数.它仍然说有超过150个结果.
思考?我甚至在正确的球场吗?
1> lchamp..:
一种解决方案是获取对象并删除它们.这是一个示例(确保您指定自己的实体):
// If you'll be using the Managed Object Contexte often,
// you might want to make it a lazy property :
lazy var managedObjectContext : NSManagedObjectContext? = {
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
if let managedObjectCOntext= appDelegate.managedObjectContext {
return managedObjectContext
}
else {
return nil
}
}()
func deleteData() {
let cOntext= self.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName: "yourEntity")
fetchRequest.includesPropertyValues = false // Only fetch the managedObjectID (not the full object structure)
if let fetchResults = context.executeFetchRequest(fetchRequest, error: nil) as? [yourEntity] {
for result in fetchResults {
context.deleteObject(result)
}
}
var err: NSError?
if !context.save(&err) {
println("deleteData - Error : \(err!.localizedDescription)")
abort()
} else {
println("deleteData - Success")
}
}