Data如何删除?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Data如何删除?相关的知识,希望对你有一定的参考价值。
data是下载小说时分解数据包出现在桌面上,分成janr edb 和janr EDT
文件.粉碎不了也复制不了.进入任务管理器也找不到文件,不能删除原因是
被另一个用户锁定或程序运行.请大侠帮忙,谢谢!
http://www.onlinedown.net/soft/24732.htm
Unlocker是一个免费的右键扩充工具,使用者在安装后,它便能整合于鼠标右键的操作当中,当使用者发现有某个文件或目录无法删除时,只要按下鼠标右键中的“Unlocker”,那么程序马上就会显示出是哪一些程序占用了该目录或文件,接着只要按下弹出的窗口中的“Unlock”就能够为你的文件解套。
Unlocker 不同于其它解锁软件的部分在于它并非强制关闭那些占用文件的程序,而是以解除文件与程序关连性的方式来解锁,因此不会像其它解锁程序一样因为强制关闭程序而造成使用者可能的数据遗失。 参考技术A 进入安全模式下应该可以的.按F8就可以进入删除.
如何在 Swift 中从 Core Data 中删除数据时删除 UITableView 行?
【中文标题】如何在 Swift 中从 Core Data 中删除数据时删除 UITableView 行?【英文标题】:How do I remove a UITableView row while deleting its data from Core Data in Swift? 【发布时间】:2015-09-28 22:46:48 【问题描述】:我正在从从 CoreData 接收其信息的 UITableView 中删除一行。目前,我已经弄清楚它可以删除 CoreData 信息的位置,但它并没有清除 UITableView 中的行。我使用的大多数方法都导致崩溃。这是原始代码(来源:blog.revivalx.com)
var peopleArray: NSMutableArray = [People]() //People is CoreData entity
@IBOutlet weak var contactTable: UITableView!
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
let context: NSManagedObjectContext = appDel.managedObjectContext!
context.deleteObject(peopleArray[indexPath.row] as! NSManagedObject)
peopleArray.removeAtIndex(indexPath.row)
context.save(nil)
我试过插入:
contactTable.deleteRowsAtIndexPaths([indexPath.row
], withRowAnimation: UITableViewRowAnimation.Automatic)
进入此代码并遇到错误。对于如何同时执行这两种删除,大量的消息来源并没有为我提供答案。
如何在 Swift 中同时从 UITableView 中删除该行及其在 CoreData 中的对应条目?
谢谢
编辑:
这里是完整的函数:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
if editingStyle == UITableViewCellEditingStyle.Delete
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
let context: NSManagedObjectContext = appDel.managedObjectContext!
context.deleteObject(peopleArray[indexPath.row] as NSManagedObject)
peopleArray.removeAtIndex(indexPath.row)
contactTable.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
context.save(nil)
contactTable.reloadData()
【问题讨论】:
什么是myList
?它与peopleArray
有什么关系?在numberOfRowsInSection
和/或cellForRowAtIndexPath
中使用了哪些?
【参考方案1】:
这一行
contactTable.deleteRowsAtIndexPaths([indexPath.row], withRowAnimation: UITableViewRowAnimation.Automatic)
应该改为这个方法,因为它应该得到an array of indexPath
而不是array indexPath.row
contactTable.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
【讨论】:
谢谢。这是一个改进,但它们似乎仍然不同步。当我在删除 CoreData 之前使用上面的行时,我得到“第 0 节中的行数无效”......如果有帮助,我可以在这里打印出大量的文本。当我之后使用它时,我得到'数组索引超出范围'。 你是什么意思?不要忘记使用reloadData()
评论已更新 - 我不小心按了 Enter。尽管我已将 reloadData() 插入到函数的末尾,但使用 reloadData() 对当前问题没有影响。
你在哪里打电话?是否在commitEditingStyle
方法中
将函数全部添加到原始问题中,包括 reloadData()【参考方案2】:
你做的太多了。这应该(大致)根据 MVC(模型视图控制器)设计模式工作:
Core Data 负责处理数据,即模型。 UITableView 负责显示数据。 您的代码是对用户操作做出反应并告诉模型要做什么的控制器。用户点击删除,你告诉 Core Data 删除对象并让视图重新加载数据。
所以你应该从你的委托函数中删除deleteRowsAtIndexPaths
。将表格视图告诉reloadData
应该会导致UITableView
调用您的数据源委托函数,例如tableView(_ tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
。在该函数中,您向 Core Data 请求正确的数据并将其交给视图。
或者更好的是使用 Swift 和 Core Data 选项创建一个新的 Master-Detail 应用程序,这样您就可以免费获得所有正确的源代码。这段代码处理它的方式与我上面建议的不同:它将表格视图告诉deleteRowsAtIndexPaths
,但它也不会两者兼而有之。
【讨论】:
以上是关于Data如何删除?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中从 Core Data 中删除数据时删除 UITableView 行?