Search code examples
iosiphoneios7nsdictionary

I Want to get specific data from Nsarray Contains NsDictionaries


Hello friends i Am new in ios.in my App i am getting Json response from web service.response is type of Nsarray Contains NsDictionaries.in that dict there is categeryName=%@.i want to populate the table view which cantains only Names Of Product that matches with that Categoryname String.i am Getting All the Name From All the dict

     cell.textLabel.text = [[songArray objectAtIndex:indexPath.row] objectForKey:@"Name"];

And this is My Array

value =     (
            {
        AreaBaseKey = "728b0e3e-295a-459d-9dca-56084afdeba8";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;

    },
            {
        AreaBaseKey = "c666bd31-ac3c-4028-a983-51fb9063e0dc";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;

    },
            {
        AreaBaseKey = "694c4b74-0a66-4f8d-b14c-8c53dfe8696f";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;
               },
            {
        AreaBaseKey = "cd60fb89-8aae-4f02-925b-8e91ccd648b3";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;
                },
            {
        AreaBaseKey = "54807449-9159-4701-9e72-d4cdf0e8163d";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;
                },
            {
        AreaBaseKey = "1ec28a54-c0d1-4f99-966d-02f83ece35d2";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;
                },
            {
        AreaBaseKey = "996cb68e-f950-e311-93f8-001a640a73ee";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;
                },
            {
        AreaBaseKey = "a6dac1ba-744b-e311-93f5-001a640a73ee";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;
              },
            {
        AreaBaseKey = "8c36f9e0-744b-e311-93f5-001a640a73ee";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;
               },
            {
        AreaBaseKey = "ec0c9f6b-754b-e311-93f5-001a640a73ee";
        CategoryKey = "9abcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Topuri;
        Code = 000000178242;
        IsActive = 1;
        Name = Chiloti;

    },
            {
        AreaBaseKey = "1a96ca82-a2f1-48d2-91c3-a14ae3d09f70";
        CategoryKey = "8cbcd7cb-6e4b-e311-93f5-001a640a73ee";
        CategoryName = Pachete;
        Code = 100;
        IsActive = 0;
        Name = 3pizza;
                },

)

I Am Doing this

{   NSString *str = self.AppDelegate.indexname;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY CategoryName LIKE %@",str];
    NSArray *result = [songArray filteredArrayUsingPredicate:predicate];
    NSLog(@"%@",result);
}

And This Also

{
 NSString *str=self.AppDelegate.indexname;
 NSMutableArray *arr = [[NSMutableArray alloc]init];
    for(NSDictionary *dict in songArray)
 {
        if([[dict objectForKey:@"CategoryName"]isEqualToString:str])
    {
        [arr addObject:dict];
        NSLog(@"%@",arr);
    }
 }

}

But Not Getting Output I want at this is the Errror in line NSArray *result = [songArray filteredArrayUsingPredicate:predicate];


Solution

  • You can use NSPredicate for filter NSArray or NSMutableArray of NSDictionary or NSMutableDictionary.

    NSString *str = <search string>;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY CategoryName LIKE %@", str];
    NSArray *result = [value filteredArrayUsingPredicate:predicate]; 
    

    To know about more NSPredicate checkout that link - How To Create Predicates