ios - 如何在 iOS 中从 Nsarray 中搜索?

标签 ios objective-c iphone uitableview uisearchbar

我有 NSarray,我想根据我的数组中的所有键进行搜索。我已经应用了这段代码。首先这是我的数组。

   MyArray =     (
            {
        Payment = "PAY-0172595";
        "Payment Date" = "2014-10-29";
        "Payment ID" = a1Wo00000011uMMEAY;
        Status = Paid;
        "Total Amount" = "217.76";
    },
            {
        Payment = "PAY-0177591";
        "Payment Date" = "2014-10-30";
        "Payment ID" = a1Wo00000011w7uEAA;
        Status = Paid;
        "Total Amount" = "100.00";
    }
  ) 

在上面,我显示了较少的数组索引,例如,现在这是我在 UItable View 中使用的数组,并希望根据每个数组键进行搜索,例如 Payment、Payment Date、Status 等。我成功搜索了所有键,但我认为这不是好方法。我在这里显示我使用的代码。

  - (void)viewDidLoad
  {

  for (int i=0; i<Payments_details.count; i++)
   {


  NSString *str=[NSString stringWithFormat:@"%@/%@/%@/%@/%@",[[Payments_details objectAtIndex:i] valueForKey:@"Payment"],[[Payments_details objectAtIndex:i] valueForKey:@"Total Amount"],[[Payments_details objectAtIndex:i] valueForKey:@"Payment Date"],[[Payments_details objectAtIndex:i] valueForKey:@"Status"],[[Payments_details objectAtIndex:i] valueForKey:@"Payment ID"]];

    NSDictionary *dict=[[NSDictionary alloc]initWithObjectsAndKeys:str,@"SN", nil];

    [search_arr addObject:dict];

 }

}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
 {
 if (![search_bar.text isEqualToString:@""])
 {

    searching=YES;

   NSPredicate *resultPredicate = [NSPredicate
                                   predicateWithFormat:@"SELF contains[cd] %@",
                                   searchBar.text];
   //  NSLog(@"tim %@",resultPredicate);
   searchArr = [[search_arr valueForKey:@"SN"] filteredArrayUsingPredicate:resultPredicate];
   NSLog(@"tim %@",searchArr);

}
else
{
    searching=NO;

}
[table_Payments reloadData];

}

此代码成功运行,但假设当我们像 PAY-0177 那样搜索时...。在我的数组中这是第二个索引,现在根据搜索我们需要将其作为第一个索引。所以我也成功地做到了这里是我的代码。我在这里显示的代码更少。所以请忽略所有事情。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
   if (searching==YES)
    {

        NSArray* foo = [[searchArr objectAtIndex:indexPath.row] componentsSeparatedByString: @"/"];

        custom_cell.Payment.text = [foo objectAtIndex: 0];

       custom_cell.Totalamount.text=[foo objectAtIndex: 1];

       custom_cell.PaymentDate.text=[foo objectAtIndex: 2];

        custom_cell.Status.text=[foo objectAtIndex: 3];


    }

 }

根据这个我得到了我想要的特定索引。但我认为我的数组中只有四个键现在假设如果我有 10 个我们的 15 个键那么我认为这不是好方法。所以请告诉我。

最佳答案

关于ios - 如何在 iOS 中从 Nsarray 中搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26667814/

相关文章:

ios - 此日期时间响应的正确格式是什么

iOS Present modal view controller 在启动时没有闪光灯

ios - 如何在不加载以前的数据的情况下从父 View 中删除和添加 UICollectionView ?

ios - 在快速关闭中返回 Void 和 () 之间的区别

iphone - 您可以使用 OpenURL 打开 native iPhone 邮件应用程序,但不能用于撰写邮件吗?

iphone - 如何创建类似Viber的应用程序?

objective-c - 通过切换布局触发动画 UICollectionView 单元格调整大小

ios - 新任务不等待GCD Barriers

ios - 手指追踪和手势识别

iphone - iOS 6中如何让用户选择路由App