2013-06-30 78 views
1

我想總結可以從我的服務器下載並且不存在於我的應用程序中的所有圖像大小。我有一個包含以下詞典等辭書:使用NSPredicate過濾NSDictionaries的NSDictionary

"iPhone_small_991.jpg" =  { 
     PictureExists = 1; 
     PictureSize = 2406; 
    }; 
    "iPhone_small_992.jpg" =  { 
     PictureExists = 0; 
     PictureSize = 2384; 
    }; 
    "[email protected]" =  { 
     PictureExists = 1; 
     PictureSize = 2642; 
    }; 

如何做一個NSPredicate必須看起來像如果我想獲得符合特定鍵模式的所有對象的數組(@的endsWith和2x.jpg = PictureExists 0 )??

最佳的解決方案是計算總和直接:)

+1

您可以使用下面的代碼添加:http://stackoverflow.com/questions/17029616/sum-of-records-in-property-list/17029643#17029643 –

+0

迭代所有按鍵比使用*更快, NSPredicate *。 –

回答

0

你可以從字典中獲得allKeys,然後使用ENDSWITH @2x.jpg謂詞篩選陣列。然後你可以使用objectsForKeys:notFoundMarker:來獲得匹配的字典。然後使用PictureExists = 0謂詞過濾該數組。然後使用KVC獲取@sum.PictureSize

3

兩個步驟:

  1. 濾波器的NSDictionaryNSPredicate,得到鍵陣列相匹配的所需圖案

    NSArray *matchingKeys = [[d allKeys] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"name ENDSWITH[cd] @@2x"]]; 
    
  2. 總結了PictureSize的值使用KVC collection operators

    [[d objectsForKeys:matchingKeys notFoundMarker:NSNull.null] valueForKey:@"@sum.PictureSize"]; 
    
+0

耶〜正是:) +1 –