2017-04-17 61 views
0

我有一個包含NSDictionaries的數組。如何使用字典中的鍵的值從NSMutableArray中搜索NSDictionary對象

[ 
    { 
    "ObjectId": 20, 
    "ObjectName": "Leave Request", 
    "RequestItems": [] 
    "ClassName": "req-auth" 
    }, 
    { 
    "ObjectId": 22, 
    "ObjectName": "Cancel Leave Request", 
    "RequestItems": [] 
    "ClassName": "req-auth" 
    } 

我想這個數組Leave RequestCancel Leave Request對象可以辦理入住手續。所以我要通過ObjectName搜索對象。但我不明白如何通過使用這些對象的1值來搜索這些對象。請幫幫我。 感謝

+0

您的問題相關的問題已經在SO回答了多次。 –

回答

0

試試這個

NSString *searchString = @"Cancel"; 
    NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { 
     return [evaluatedObject[@"ObjectName"] localizedCaseInsensitiveContainsString:searchString]; 
}]; 
    filteredContentList = [NSMutableArray arrayWithArray:[searchListValue filteredArrayUsingPredicate:predicate]]; 
0

您可以嘗試使用NSPredicate。類似這樣的:

-(NSArray *)array:(NSArray *)array filteredWithString:(NSString *)string{ 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.ObjectName CONTAINS[cd] %@",string]; 

    return [array filteredArrayUsingPredicate:predicate]; 
} 

只需傳入數組以過濾字符串,然後將其稱爲您要過濾的字符串。

有幾件事情:這裏cd用於執行比較不敏感的情況下,如果你想它是區分大小寫剛剛從字符串中刪除的cdObjectName是您要過濾的財產。如果您想要進行精確比較,您可以將CONTAINS更改爲LIKE

0

如果你只是想從陣列中的每個字典取objectName,然後做這樣:

for dict in arrayOfData{ 
     if let strObjectName : String = dict["ObjectName"] as? String{ 
     print(strObjectName) 
     } 
    } 
+0

您可以創建一個函數,在該函數中爲OP傳遞一個字符串,以便僅在'ObjectName'中獲取他想要的值。然後在where子句中使用這個字符串,使它成爲'if let strObjectName = dict [「ObjectName」] as? String,strObjectName.contains(「Cancel」)',然後將字典追加到一個新數組中 – Rikh

相關問題