2015-03-31 54 views
1

当数组中的搜索值变得越来越< __NSArrayM:>在枚举时发生了变化。我正在使用这段代码。在我的iPhone应用程序中,我试图在Tableview中实现UISearchBar

NSInteger strlen=[searchText length]; 


for (NSString *pStr in pArrBusinessName) { 

    NSRange nameRange = [pStr rangeOfString:searchText options:NSCaseInsensitivePredicateOption]; 

    if(nameRange.location != NSNotFound) { 

     if (strlen == 1) { 
      pArrFilteredTableData = pArrBusinessName; 
     } else { 

      if ([pStr isKindOfClass:[NSNull class]]) { 
       NSLog(@"NSNull isKindOfClass called!"); 
      } 


      if (![pStr isKindOfClass:[NSNull class]]) { 

       [pArrFilteredTableData addObject:pStr]; 

      } 
     } 

    } else { 

     if ([pArrFilteredTableData count] == 0) { 

     } 

    } 

    [pTblDetails reloadData]; 
} 
+0

所以,你显然是通过数组循环和改变它,而循环内。相反,请创建一个新阵列来保存搜索结果并单独更新。你可以前往谷歌搜索许多关于如何在TableView中实现UISearchBar的例子。 SO也有很多例子。请在添加您的问题前先搜索。我相当确定这个问题将被标记为重复。不要灰心,这是如何工作的SO。先搜索。 – 2015-03-31 10:01:09

+0

谢谢Tommie – KrishJacky 2015-03-31 10:22:31

+0

[Collection <\ _ \ _ NSArrayM:0x76c11b0>在枚举时发生了变异](http://stackoverflow.com/questions/8458786/collection-nsarraym-0x76c11b0-was-mutated-while-being - 枚举) – 2015-03-31 10:23:22

回答

1

更改此代码:

pArrFilteredTableData = pArrBusinessName; 

此;

pArrFilteredTableData = [pArrBusinessName mutableCopy]; 

确保pArrFilteredTableData是NSMutableArray的,如果它是不是已经

0

这似乎是你正在做主要数组中的修改,同时搜索其中的内容。如果将搜索结果保存在单独的可变数组中,而不是使用您创建列表的主数组进行变异,那将会很好。过滤来自主数组的搜索记录并将其保存在搜索数组中。

+0

如果(strlen == 1){pArrFilteredTableData = pArrBusinessName;}}可以给出示例 – KrishJacky 2015-03-31 10:59:04

+0

; } – 2015-03-31 11:04:05

+0

在上面的语句,你基本上分配pArrBusinessName到pArrFilteredTableData阵列参考,如果你再有突变的pArrFilteredTableData,它能够影响pArrBusinessName作为pArrFilteredTableData基本上保持pArrBusinessName的refrence。 – 2015-03-31 11:06:27

相关问题