Richa Vijayvargiya
Richa Vijayvargiya

Reputation: 209

NSPredicate and filteredArrayUsingPredicate:predicate problem

for (int i = 0; i < nCount1; i ++) {
        CGatewayMedia * media = (CGatewayMedia *)[GatewayDetail.mcMutableArray objectAtIndex:i];
        NSString * zStr1 = [[NSString alloc]initWithFormat:@"%d",media.mnSNO];
        NSString * zStr2 = [[NSString alloc]initWithFormat:@"%@",media.mcstrMOrgName];
        NSString * zStr3 = [[NSString alloc]initWithFormat:@"%@",media.mcstrUser];
        NSString * zStr4 = [[NSString alloc]initWithFormat:@"%@",media.mcstrFType];
        NSString * zStr5 = [[NSString alloc]initWithFormat:@"%@",media.mcstrFSize];
        NSString * zStr6 = [[NSString alloc]initWithFormat:@"%@",media.mcstrFDate];
        NSString * zStr7 = [[NSString alloc]initWithFormat:@"%d",media.mnMedID];
        NSString * zStr8 = [[NSString alloc]initWithFormat:@"%@",media.mcstrMedSysName];
        CGatewayData * zDataObject = [[CGatewayData alloc]initWithString1:zStr1 
                                                               andString2:zStr2 
                                                               andString3:zStr3
                                                               andString4:zStr4
                                                               andString5:zStr5
                                                               andString6:zStr6
                                                               andString7:zStr7
                                                               andString8:zStr8
                                      ];


        [mMedia.nsMutaryOfDataObject addObject:zDataObject];
    } 
    mMedia->mcMediaController->nsMutaryOfDataObject = nil;
    mMedia->mcMediaController->nsMutaryOfDataObject = [[NSMutableArray alloc]init];

NSPredicate *predicate = [NSPredicate
                              predicateWithFormat:@"(zDataObject.nsStrName4 == %@) OR (zDataObject.nsStrName4 == %@ )",@"MP3",@"WMA"];*/
    mMedia->mcMediaController->nsMutaryOfDataObject = (NSMutableArray*)[mMedia.nsMutaryOfDataObject filteredArrayUsingPredicate:predicate];

i'm not getting expected result ..m i doing right use of prediacte and filteredArrayUsingPredicate?

Upvotes: 0

Views: 546

Answers (1)

V1ru8
V1ru8

Reputation: 6147

First of all zStr strings are leaking. You init them with alloc] init...] so they have a retain count of +1. After adding them to your CGatewayData object you should release them. And of corse your CGatewayData object should retain them as long as it needs them. Same thing with your zDataObject. Take a look at the Memory Management Programming Guide

Second do never nuse -> in Objective-C! You should use properties for that!

Now to your problem. You have to be sure that the path zDataObject.nsStrName4 exists. Means the object accessed by mMedia.nsMutaryOfDataObject in your code. Should have at least a getter called zDataObject and I assume it returns a CGatewayData object. So the CGatewayData object has to have at least a getter called nsStrName4. For details I highly recommend to read the Key-Value Coding Programming Guide

Upvotes: 1

Related Questions