2016-06-22 131 views
0

我有兩個詞典就像一個在下面:比較一個字典的值到另一個詞典的按鍵

Dictionary 1: 
keyIdDict { 
    "Feb 5, 2015" =  (
     607 
    ); 
    "Nov 9, 2009" =  (
     431, 
     433, 
     435 
); 
} 

Dictionary 2: 
rollImageDict { 
    607 = "/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009123.jpg"; 
    433 = "/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009124.jpg"; 
    417 = "/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009125.jpg"; 
    419 = "/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009126.jpg"; 
    421 = "/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009129.jpg"; 
    435 = "/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009130.jpg"; 
} 

我想在第一個字典即607"/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009123.jpg"

最終結果替換值預期:

keyIdDict { 
    "Feb 5, 2015" =  (
     "/Users/betteruse/Pictures/iPhoto Library.photolibrary/Masters/2014/10/21/20141021-160023/06122009123.jpg" 
    ); 
} 

有人可以幫助我嗎?

回答

0

在這裏你去:

NSMutableDictionary *newDictionary = [NSMutableDictionary dictionary]; 
[keyIdDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ 
    NSArray *array = [rollImageDict objectsForKeys:obj notFoundMarker:[NSNull null]]; 
    [newDictionary setObject:array forKey:key]; 
}]; 
+0

它的工作。非常感謝 :) –

0

我沒有我的Mac編寫的代碼,但它是非常簡單,只要按照步驟

首先遍歷字典(詞典1)和可變

獲得的價值你會有類似的東西

607 //first iteration 
431,433,435 // second iteration 

然後再次拆分該值,並再次迭代它。

所以現在當你分割和迭代時,你將有607作爲值,迭代每個值。

每次迭代獲取來自其他字典

完成值..

0

我沒有測試,但你可以試試這個代碼

NSMutableDictionary *newDic = [[NSMutableDictionary alloc] initWithCapacity:0]; 
    for (NSNumber *rollNum in rollImageDict) { 
     for (NSString *str in keyIdDict) { 
      NSMutableArray *temp = [[NSMutableArray alloc] initWithCapacity:0]; 
      for (NSNumber *keyNum in keyIdDict[str]) { 
       if (rollNum == keyNum) { 
        [temp addObject:rollImageDict[rollNum]]; 
       } 
      } 
      newDic[str] = temp; 
     } 
    } 
+0

我試過你的方法。它可以工作,但它會用圖像路徑替換整個陣列。 –

+0

我改變了一些東西,這樣對應的日期就不能在數組中有重複的數字。 – Jeason

+0

它崩潰說***集合<__ NSArrayM:0x608000045d60>被枚舉時發生了變異。 –

相關問題