English 中文(简体)
在 NS Mumotable 阵列中搜索NSString
原标题:Search NSString in NSMutableArray

This may be possible duplicate of many existing questions, one of them is : This

或其他链接 我搜索至今。

我正在研究一个应用程序,其中我展示人民信息,如Thier位置、姓名、图像、性别、电话号码等。

我通过 xmls 获取这些数据。 从剖析中我喂养我的NSM可图阵列, 并在表格视图中显示细节 。

我要在这个阵列中应用搜索人名 。

我如何从这些名字中找到人名?

以下是我使用的代码:

用于在表格视图中显示细节 :

 if (cell == nil) 
 {
   NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCellDetail" owner:self options:nil];

   id firstObject =[topLevelObjects objectAtIndex:0];

   if ( [ firstObject isKindOfClass:[UITableViewCell class]] )
    cell = (CustomCellDetail *)firstObject;

     ParsingItem *item=[self.arrayPeoples objectAtIndex:indexPath.section];

     cell.lblUserName.text=[item.mdictXMLTagsData valueForKey:@"UserName"];
     cell.lblStatus.text=[item.mdictXMLTagsData valueForKey:@"StatusMessage"];
     cell.lblAge.text=[item.mdictXMLTagsData valueForKey:@"Gender"];

为了获取结果,我发现只有字符串可以从 nsmodiable 数组中搜索,所以我应用了以下搜索方法:

  -(void)FetchSearcheRecordsFromArray
  {
      self.filteredArray = self.arrayPeoples;

      NSLog(@"string :%@",strSearchingText);

      NSPredicate *Predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",self.strSearchingText];

      NSLog(@"string :%@",Predicate);

      [self.filteredArray filterUsingPredicate:Predicate];

      NSLog(@"Array count is : %d",[self.filteredArray count]);

      if ([self.filteredArray count] <= 0 )
      {
           self.lblNoRecordsFound.hidden = NO;
      }
      else 
      {
           self.lblNoRecordsFound.hidden = YES;
      }

      [self.tblViewPeople reloadData];
  }

我的应用程序崩溃在线上 :

[self.filteredArray filterUsingPredicate:Predicate];

正如我所知道的,我的阵列里没有字符串, 有一个解析项目。

我想只对人们的名字进行搜索, 但我不知道如何从数组中只获得名字 。

我怎样才能做到这一点?

周围有工作吗?

我需要做到这一点,但不知道如何做!

请救救我!

最佳回答

最后,我放弃了应用搜索的概念,将字符串名称与搜索文本匹配,如果名称包含搜索文本,则将数组索引添加到过滤的数组中。

以下是相同的代码:

   NSPredicate *Predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",self.strSearchingText];

   NSLog(@"string :%@",Predicate);

   NSLog(@"arrayPeoples count is : %d",[self.arrayPeoples count]);

   NSMutableArray *arrSearch = [[NSMutableArray alloc] init];

   for (int i = 0; i < [self.arrayPeoples count];i++ ) 
   {
       ParsingItem *item = [self.arrayPeoples objectAtIndex:i];

       NSString * strUserName = [item.mdictXMLTagsData valueForKey:@"UserName"];

       if ([strUserName rangeOfString: strSearchingText options: NSCaseInsensitiveSearch].location != NSNotFound)
       {
           NSLog (@"Yay!  %@  found in  %@ .", self.strSearchingText, strUserName);

           [arrSearch addObject:item];
       }   
   }

   self.filteredArray = arrSearch;
问题回答

使用 anumberateObjectsUsingBlock: 方法如何 :

self.lblNoRecordsFound.hidden = YES;
[self.filteredArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if ([obj rangeOfString: strSearchingText options: NSCaseInsensitiveSearch].location != NSNotFound) {
        self.lblNoRecordsFound.hidden = NO;
        *stop = YES;
    }
}];

在此假设您的数组包含字符串( 您的代码样本显示为字符串) 。 根据您下面的评论, 情况并非如此 。

OK,所以您有一个 Parsing项目 的阵列。

这里没有人知道它们是什么。在我看来,你好像在你的头上,要求我们写你的应用程序,而没有先尝试。

花费一些时间 - 读取( 并理解) < code> NSArray 上的苹果文档, < code> NSPrespentate 。 读读您用来解析 XML 的分类上的文档。 通过您的代码来理解它正在做什么 。 如果有用的话, 添加一些 < code> NSLog 。 也许写一个只解析您的 XML 的测试应用程序 。

然后当你做了这一切, 如果你仍然不明白, 回来寻求帮助。

在Ashley Mills的回答中,您对Ashley Mills的回答似乎并不包含字符串。 contains 上游操作员只是用字符串来操作,对分析项目没有任何意义,除非分析项目是一个字符串。

根据您在编辑中添加的代码( 您的数组包含解析项目, 您想要搜索的字符串是 解析项目 的用户Name 属性 ) 所隐含的解析项目结构, 您的前提应该是像这样的 :

[NSPredicate predicateWithFormat:@"mdictXMLTagsData.UserName contains[c] %@", self.strSearchingText]




相关问题
List Contents of Directory in a UITableView

I am trying to list the contents of Ringtones directory in a TableView, however, I am only getting the last file in the directory in ALL cells, instead of file per cell. This is my code: - (...

iPhone NSUserDefaults persistance difficulty

In my app i have a bunch of data i store in the NSUserdefaults. This information consists of an NSObject (Object1) with NSStrings and NSNumbers and also 2 instances of yet another object (Object2). ...

Writing a masked image to disk as a PNG file

Basically I m downloading images off of a webserver and then caching them to the disk, but before I do so I want to mask them. I m using the masking code everyone seems to point at which can be found ...

Resize UIImage with aspect ratio?

I m using this code to resize an image on the iPhone: CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0); UIGraphicsBeginImageContext(screenRect.size); [value drawInRect:screenRect blendMode:...

Allowing interaction with a UIView under another UIView

Is there a simple way of allowing interaction with a button in a UIView that lies under another UIView - where there are no actual objects from the top UIView on top of the button? For instance, ...

热门标签