从 NSmutableArray 中删除项目

Posted

技术标签:

【中文标题】从 NSmutableArray 中删除项目【英文标题】:removing items from NSmutableArray 【发布时间】:2011-07-19 07:27:13 【问题描述】:

我有两个 nsmutablearrays

array1: searchedStores = [[NSMutableArray alloc] init];

array2: allStores; ///它保存存储信息,它也是 NSMutableArray

现在如果我在“searchedStores”数组中添加对象

for (int i= 0; i < [allstores count]; i++)
  Franchise *store = [allStores objectAtIndex:i];
    if ([store.ZipCode hasPrefix:str])  /// where str is searched string
    
      [searchedStores addObject:store];    // some stores information will be inserted in "searchedStores" array
    

现在,如果我从 searchedStores 数组中删除对象,它也会从“allStores”数组中删除对象

删除我正在写的对象

[searchedStores removeAllObjects];

如何仅从“searchedStores”数组中删除对象。并且“allStores”数组应该保留它的对象。

【问题讨论】:

从一个数组中删除项目,根本不应该改变另一个数组。你是如何创建和填充每个数组对象的? 某处必须释放太多或保留太少。 Squeegy 是对的,两个数组都拥有(并保留)它们包含的对象,因此从一个数组中删除不应该影响另一个数组,因此问题必须出在之前运行的代码中。.. 请说明您在哪里以及如何初始化allStoressearchedStores 我已经解决了这个问题。是的,我正在发布它。感谢您的所有回复 【参考方案1】:

如果您只是用 searchedstores 数组分配 allstores 数组,那么在 searchedstores 数组中所做的更改将反映到 allstores。您需要为 allstores 分配新内存,然后根据您的逻辑行为将 searchedstores 数组中的对象添加到其中。

【讨论】:

【参考方案2】:

每个数组都是完全独立的。如果从一个数组中删除对象会影响另一个数组,则您没有两个数组,而只有两个指向同一数组的指针。您需要同时实例化(alloc/init 或 mutableCopy)。随意显示您的初始化代码。

【讨论】:

以上是关于从 NSmutableArray 中删除项目的主要内容,如果未能解决你的问题,请参考以下文章

通过 UITableView 从 NSMutableArray 中删除项目

从 NSMutableArray 中删除对象时崩溃

从 NSMutableArray xcode 中删除对象

从 NSMutableArray 添加和删除对象

使用 NSPredicates 过滤 NSMutableArray

谓词不敏感搜索两个字符串数组