在 Swift 中清空并保存核心数据 Table 的最简单方法是什么?
Whats the easiest way to empty and save a Core Data Table in Swift?
所以我有一个实体,我在 iOS8 XCODE 和 SWIFT 中将其视为一个简单的数据库 Table。我想删除 table 中的所有条目。永久。因此,当我再次启动应用程序时,他们不会 reload.This 是我的代码。
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 中没有任何内容,一切都很好。但是,如果我通过获取语句向实体 return 编写代码,并对记录数进行计数。它仍然说有超过 150 个结果。
想法?我什至在正确的球场?
一种解决方案是获取对象并将其删除。
这是一个示例(确保您指定自己的实体):
// 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")
}
}
所以我有一个实体,我在 iOS8 XCODE 和 SWIFT 中将其视为一个简单的数据库 Table。我想删除 table 中的所有条目。永久。因此,当我再次启动应用程序时,他们不会 reload.This 是我的代码。
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 中没有任何内容,一切都很好。但是,如果我通过获取语句向实体 return 编写代码,并对记录数进行计数。它仍然说有超过 150 个结果。
想法?我什至在正确的球场?
一种解决方案是获取对象并将其删除。 这是一个示例(确保您指定自己的实体):
// 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")
}
}