从iOS中的两个不同的NSMutableArray中删除同一行
Posted
技术标签:
【中文标题】从iOS中的两个不同的NSMutableArray中删除同一行【英文标题】:Delete the same row from two different NSMutableArray in iOS 【发布时间】:2015-08-02 01:46:52 【问题描述】:我有一个名为“items”的 NSMutableArray,它的数据填充在 uitableviewcontroller 中。我正在使用 uiseachcontroller 从“items”数组中搜索数据,并将搜索结果添加到“filteredTableData”,这是一个 NSMutableArray,也使用相同的表视图显示。
当我从“项目”中删除一行时,它工作正常。但是,当我从搜索结果中的“filteredTableData”中删除时,如何从“items”数组中删除相同的对象?
下面是我的代码:
if(isFiltered)
[filteredTableData removeObjectAtIndex:indexPath.row];
else
[items removeObjectAtIndex:indexPath.row];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
[self savePasswordlistItems];
有什么帮助吗?
【问题讨论】:
您要删除的对象是唯一的吗?如果是这样,只需致电removeObject:
。
@rmaddy,“items”数组是 nsobject 的子类,它包含一些 NSStrings 属性。我正在使用“密钥”对它们进行编码。
这根本不能回答我的问题。 items
数组中的每个对象是唯一的,还是您的两个或多个自定义类可以表示相同的数据?
是的。它是独一无二的。如何从“filteredTableData”中获取对要删除的对象的引用,然后在“items”数组中删除相同的对象?
【参考方案1】:
您是否在删除项目后重新加载表格视图?有时需要用[tableView reloadData]重绘一遍;
【讨论】:
是的。我正在重新加载它。但是,重新加载后数据不会被删除。问题是我正在从“filteredTableData”数组中删除包含搜索结果的行。当它被删除时,源数组也应该被删除?如果不是这样,我需要获取删除对象的引用,然后从“items”数组中删除相同的对象对象。这就是我卡住的地方。【参考方案2】:好的。感谢@rmaddy 和@Rodrigo。我设法通过获取对象的引用来删除对象,然后使用 removeObjectIdenticalTo 删除对象
如果有人需要,这里是代码
PasswordItem *item;
if(isFiltered)
item = [filteredTableData objectAtIndex:indexPath.row];
[filteredTableData removeObjectAtIndex:indexPath.row];
[items removeObjectIdenticalTo: item];
else
item = [items objectAtIndex:indexPath.row];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
[self savePasswordlistItems];
[self.tableView setEditing:NO];
[tableView reloadData];
【讨论】:
以上是关于从iOS中的两个不同的NSMutableArray中删除同一行的主要内容,如果未能解决你的问题,请参考以下文章
iOS:将两个 NSMutableArray 存储在 .plist 文件中
NSMutableArray (iOS) 中的 NSDictionary [关闭]
如何根据 iOS 中的两个条件从 AppDelegate 呈现两个不同的 ViewController?