在标题中,我想在用户退出帐户
时从CoreData中删除数据我写的是:
let moc = DataController().managedObjectContext
var context : NSManagedObjectContext?
var entityCurrentValue : NSEntityDescription?
var entityPreviousValue : NSEntityDescription?
var entityLastAccess : NSEntityDescription?
override func viewDidLoad() {
super.viewDidLoad()
loadCoreData()
}
}
func loadCoreData(){
context = moc
entityCurrentValue = NSEntityDescription.entityForName("CurrentValue", inManagedObjectContext: context!)
entityPreviousValue = NSEntityDescription.entityForName("PreviousValue", inManagedObjectContext: context!)
entityLastAccess = NSEntityDescription.entityForName("LastAccess", inManagedObjectContext: context!)
}
@IBAction func logoutButton_clicked(Sender: UIButton!) {
PFUser.logOut()
deleteElement(entityCurrentValue!)
deleteElement(entityPreviousValue!)
deleteElement(entityLastAccess!)
self.performSegueWithIdentifier("loginSegue", sender: Sender)
}
在这个函数中我尝试删除实体中的元素
func deleteElement(entity : NSEntityDescription){
let fetchRequest = NSFetchRequest()
fetchRequest.entity = entity
fetchRequest.fetchBatchSize = 50
var fetchResult = Array<AnyObject>()
do{
try fetchResult = (context?.executeFetchRequest(fetchRequest))!
}catch{
fatalError()
}
for entity in fetchResult as! [NSManagedObject] {
self.context?.deleteObject(entity)
}
}
问题在于,当我退出时,并且我使用其他帐户登录时,应用程序会加载已存储到内存中的数据。有人能帮我吗?感谢
答案 0 :(得分:0)
托管对象上下文仅是磁盘上数据的虚拟表示。因此,当您从托管对象上下文中删除对象时,它不会从磁盘中删除,而只是在上下文中标记为已删除。
为了在磁盘上保留上下文的更改,您需要在执行删除操作后保存上下文,这是代码中缺少的内容。