iOS 从 UITableView 滑动以删除 plist 中的数组
Posted
技术标签:
【中文标题】iOS 从 UITableView 滑动以删除 plist 中的数组【英文标题】:iOS Swipe to Delete Array in plist from UITableView 【发布时间】:2013-02-14 16:00:02 【问题描述】:我有一个UITableView
,每一行都是plist
中array
的名称。这意味着当我尝试使用正常的滑动删除方法时:
[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic]
应用程序崩溃。如何告诉滑动删除以在 plist 中找到数组并将其删除?
【问题讨论】:
【参考方案1】:仅删除表格视图中显示的行是不够的。您还必须从数据数组中删除该项目。大概你有一个NSMutableArray
,它在开头的 plist 中读取。 (如果只是一个NSArray
,把它改成可变的!)
删除行后,从数组中删除数据
[myDataArray removeObjectAtIndex:indexPath.row];
如果你有段,你首先要弄清楚你的对象在数组中的位置,但原理是一样的。
您现在可以选择将更改写入磁盘,方法是使用数据数组的内容覆盖现有 plist。
【讨论】:
这就是我的应用程序找到 plist 的方式。只是更改它是行不通的。NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); // get documents path NSString *documentsPath = [paths objectAtIndex:0]; // get the path to our Data/plist file NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:(NSString *)plistPath];
当然可以。只需对 NSMutableDictionary
执行相同操作即可。
我试过[dictionary removeObjectAtIndex:indexPath.row]
,仍然导致崩溃
无效更新:第0节中的行数无效。更新后现有节中包含的行数(2)必须等于更新前该节中包含的行数( 2),加上或减去从该节插入或删除的行数(0 插入,1 删除),加上或减去移入或移出该节的行数(0 移入,0 移出)。跨度>
当然。字典中没有removeObjectAtIndex
。阅读您的 API!首先从字典中获取保存行的数组,然后从该数组中删除。以上是关于iOS 从 UITableView 滑动以删除 plist 中的数组的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 UITableView 问题 - 当我们已经有一个单元格时尝试设置滑动以删除单元格
在 iphone sdk 中一起滑动以删除和移动 UItableView 选项中的单元格
UISplitViewController & UITableView 滑动删除被 SectionIndex 遮挡