2012-12-20 61 views
-1

可能重複:
Iterar over array of entity and get value of some key based on value of 「other key」 matche有條件檢索領域從字典的基礎上,其他領域的價值

請,任何人都可以給我我如何能得到建議或提示我的字典中所有salary字段的值,如果狀態字段不爲空?我只想從字典中的那些對象中檢索salary字段,其​​中status != null。請注意,我的字典是動態的,這意味着我可能有超過四個條目。任何幫助或提示高度讚賞。先謝謝你。

myArray=(
     { 
     Name = "john1"; 
     Address = "san diego"; 
     Status = "active"; 
     salary = "100; 

    }, 
     { 
     Name = "steve "; 
     Address = "birmingham"; 
     Status = "<null>"; 
     salary = "100; 
    }, 
     { 
     Name = "allan"; 
     Address = "san diego"; 
     Status = "active"; 
     salary = "100; 
    }, 

    { 
     Name = "peter"; 
     Address = "san diego"; 
     Status = "<null>"; 
     salary = "100; 
    }, 
) 

回答

0

嘗試快速列舉...

NSMutableArray* retreivedSalaries; 

for (NSDictionary* dict in myArray) { 
    if (![[dict objectForKey:@"Status"] isEqualToString:@"<null>"]) 
     [retreivedSalaries addObject:[dict objectForKey:@"salary"]]; 
}; 
0

我沒有測試過,所以你可能需要改變這個

for (int i=0;i< [myArray count];i++) 
{ 
    if ([[[myArray objectAtIndex: i] objectForKey: @"Status"] isEqualToString: @"active"]) { 

     NSLog(@"Salary is %@",[myArray objectAtIndex: i] objectForKey: @"salary"]) 
    } else { 
     NSLog(@"Status is not active"); 
    } 
} 

,或者你可以使用這樣的事情

for (NSDictionary *salary in myArray) 
    { 
     if([message valueForKey:@"Status"] isEqualToString: @"active") 
      NSLog(@"Salary is %@",[message valueForKey:@"salary"]);  

    } 

S orting salary

您可以對鍵進行排序,然後通過遍歷它們來創建一個NSMutableArray。 answer from here

NSArray *sortedKeys = [[myArray allKeys] sortedArrayUsingSelector: @selector(compare:)]; 
NSMutableArray *sortedValues = [NSMutableArray array]; 
for (NSString *key in sortedKeys) 
    [sortedValues addObject: [myArray objectForKey: key]]; 
+0

最後一個概念的作品! :D我只需要首先聲明一個NSString變量,該變量將是條件內的測試。謝謝! (y) – baste

+0

是否有一個工資的價值? – baste

+0

確定您需要對新的nsmutable數組進行排序並添加值,我已經編輯了我的答案,並且接受了答案,如果它幫助您的話 –

0

試試這個:

NSDictionary *salaries = nil; 
    NSArray *myArray .... ; 


for (NSString * salary in salaries) { 

    if ([myArray containsObject:@"salary"]) { 

     if ([salaries objectForKey:@"salary"] != NULL) { 

      NSLog (@"do something with salary: %@", salary); 
     } 
    } 

} 
+0

我會嘗試所有的建議,並給你一個反饋。謝謝大家爲你的時間 – baste

+0

沒問題。如果出現任何問題,請告訴我,我會盡我所能來幫助你。 – Winston

+0

我會把薪水的價值nmming陣列我可以排序像升序? – baste

0

我覺得這是iOS上,myArray的是一個NSArray,每個dinamically個人信息是一個的NSDictionary,如果是這樣的點,你可以做以下:

for (NSDictionary *info in myArray) { 

    if ([info objectForKey:@"Status"] != nil && ![[info objectForKey:@"Status"] isEqual:@"<null>") { 
     // Store salary whatever you need and in the formar you need 
     NSString *salary = [info objectForKey:@"salary"]; 
    } 

} 

我寫的代碼沒有編譯器,因此也許有一些compilators錯誤(對不起)。如果我理解你的問題,那麼當狀態不爲空時你可以得到薪水。

希望有助於!