iOS 从 UITableView 滑动以删除 plist 中的数组

Posted

技术标签:

【中文标题】iOS 从 UITableView 滑动以删除 plist 中的数组【英文标题】:iOS Swipe to Delete Array in plist from UITableView 【发布时间】:2013-02-14 16:00:02 【问题描述】:

我有一个UITableView,每一行都是plistarray 的名称。这意味着当我尝试使用正常的滑动删除方法时:

[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 问题 - 当我们已经有一个单元格时尝试设置滑动以删除单元格

滑动删除 UITableView (iOS) 中的整个部分

在 iphone sdk 中一起滑动以删除和移动 UItableView 选项中的单元格

UISplitViewController & UITableView 滑动删除被 SectionIndex 遮挡

UITableView 滑动删除在 iOS8 上无法正常工作

UITableView滑动删除iOS上的手势冲突