从 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 是对的,两个数组都拥有(并保留)它们包含的对象,因此从一个数组中删除不应该影响另一个数组,因此问题必须出在之前运行的代码中。.. 请说明您在哪里以及如何初始化allStores
和searchedStores
我已经解决了这个问题。是的,我正在发布它。感谢您的所有回复
【参考方案1】:
如果您只是用 searchedstores 数组分配 allstores 数组,那么在 searchedstores 数组中所做的更改将反映到 allstores。您需要为 allstores 分配新内存,然后根据您的逻辑行为将 searchedstores 数组中的对象添加到其中。
【讨论】:
【参考方案2】:每个数组都是完全独立的。如果从一个数组中删除对象会影响另一个数组,则您没有两个数组,而只有两个指向同一数组的指针。您需要同时实例化(alloc/init 或 mutableCopy)。随意显示您的初始化代码。
【讨论】:
以上是关于从 NSmutableArray 中删除项目的主要内容,如果未能解决你的问题,请参考以下文章
通过 UITableView 从 NSMutableArray 中删除项目