2016-06-22 3 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"; 
} 

Я хочу, чтобы заменить значение в 1-ом словаре т.е. 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

Я не мой макинтош, чтобы написать код, но это очень просто, просто следуйте инструкциям

Первой итерации словаря (словарь 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> была мутирована при перечислении. –

Смежные вопросы