2010-08-19 75 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