从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 中删除随机项

NSMutableArray (iOS) 中的 NSDictionary [关闭]

如何根据 iOS 中的两个条件从 AppDelegate 呈现两个不同的 ViewController?

UITableview 仅打印 NSMutableArray 的第一个对象,IOS

如何在ios的同一个Nsmutablearray中存储旧值和新值