gpt4 book ai didi

objective-c - 从 NSMutableArray 中删除对象

转载 作者:可可西里 更新时间:2023-11-01 06:22:21 24 4
gpt4 key购买 nike

我有两个元素:

NSMutableArray* mruItems;
NSArray* mruSearchItems;

我有一个 UITableView 基本上包含 mruSearchItems,一旦用户滑动并删除特定行,我需要在 mruItems 并从那里删除它们。

我没有充分使用 NSMutableArray,我的代码出于某种原因给我错误:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//add code here for when you hit delete
NSInteger i;
i=0;
for (id element in self.mruItems) {
if ([(NSString *)element isEqualToString:[self.mruSearchItems objectAtIndex:indexPath.row]]) {

[self.mruItems removeObjectAtIndex:i];
}
else
{
i++;
}
}
[self.searchTableView reloadData];

}

错误:我现在看到有些字符串不在引号之间(但 UTF8 中的字符串在引号之间)

Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x1a10e0> was mutated while being enumerated.(
"\U05de\U05e7\U05dc\U05d3\U05ea",
"\U05de\U05d7\U05e9\U05d1\U05d5\U05df",
"\U05db\U05d5\U05e0\U05df",
"\U05d1 ",
"\U05d1 ",
"\U05d1 ",
"\U05d1 ",
Jack,
Beans,
Cigarettes
)'

最佳答案

你得到一个异常,因为你在迭代它的元素时改变了一个容器。

removeObject: 完全符合您的要求:删除等于参数的所有对象。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle != UITableViewCellEditingStyleDelete)
return;

NSString *searchString = [self.mruSearchItems objectAtIndex:indexPath.row];
[self.mruItems removeObject:searchString];
[self.searchTableView reloadData];
}

关于objective-c - 从 NSMutableArray 中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11442482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com