2010-08-19 74 views
0
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]; 

我没有得到预期的结果..我正确使用prediacte和filteredArrayUsingPredicate?NSPredicate和filteredArrayUsingPredicate:谓词问题

+0

'mMedia-> mcMediaController-> nsMutaryOfDataObject = nil;'? * /我呕吐* – 2010-08-19 14:38:15

+0

惊讶?实际上它在Objective-C中起作用,当你将你的成员变量声明为@public。因为对象的处理方式是c结构。 但是,你永远不应该这样做! – V1ru8 2010-08-19 15:54:05

+0

@ V1ru8是的,我知道它的工作原理,但是(如你所说)你永远不应该这样做。 – 2010-08-19 16:08:25

回答

1

首先zStr字符串正在泄漏。你用alloc] init...]初始化他们,所以他们的保留数为+1。将它们添加到CGatewayData对象后,应该释放它们。只要需要它们,cate CGatewayData对象应该保留它们。与你的zDataObject一样的东西。 看看Memory Management Programming Guide

第二从不nuse - >在Objective-C!你应该使用它的属性!

现在你的问题。您必须确定路径zDataObject.nsStrName4存在。指您的代码中由mMedia.nsMutaryOfDataObject访问的对象。至少应该有一个叫做zDataObject的吸气器,并且我假设它返回一个CGatewayData对象。所以CGatewayData对象必须至少有一个叫做nsStrName4的getter。 有关详细信息,我强烈建议阅读Key-Value Coding Programming Guide