2016-12-24 2 views
0

Я пытаюсь добавить данные в NSMutableDictionary, который вложен в другие словари.Добавление данных в NSDictionary, который находится в другом NSDictionary

Start Output перед кодом, который добавляет данные управляют

DayData Dictionary {   //DayData Dictionary 

Monday =  {     //events Dictionary 
    trip1 =   {   //eventData Dictionary 
     numItems = 9items; 
     time = "5:00"; 
     tripName = beachfucking; 
    }; 
}; 
Thursday =  { 
    trip1 =   { 
     numItems = 9items; 
     time = "5:00"; 
     tripName = beachfucking; 
    }; 
}; 
Tuesday =  { 
    trip1 =   { 
     numItems = 9items; 
     time = "5:00"; 
     tripName = beachfucking; 
    }; 
}; 
Wendsday =  { 
    trip1 =   { 
     numItems = 9items; 
     time = "5:00"; 
     tripName = beachfucking; 
    }; 
}; 
} 

Код, генерирующий этот выход

NSMutableDictionary *eventData = [[NSMutableDictionary alloc]initWithObjects:@[@"5:00",@"9items",@"beachfucking"] forKeys:@[@"time",@"numItems",@"tripName"]]; 

NSMutableDictionary *event = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           eventData,@"trip1",nil]; 

NSMutableDictionary *dayData = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             event,@"Monday",event,@"Tuesday", 
             event,@"Wendsday",event,@"Thursday",nil]; 

Мой текущий попытаться решить эту проблему. Здесь я создаю новое событие NSDictionary, затем добавляю эти данные в словарь DayData. Но вывод неправильный. Каждый день недели получает набор данных «trip2», когда только понедельник допускает только.

NSMutableDictionary *event2 = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           eventData,@"trip2",nil]; 
[[dayData objectForKey:@"Monday"] addEntriesFromDictionary:event2]; 

Текущий неправильный выход из кода выше

2016-12-24 01:56:41.261329 test1[10098:380349] { 
    Monday =  { 
     trip1 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
     trip2 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
    }; 
    Thursday =  { 
     trip1 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
     trip2 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
    }; 
    Tuesday =  { 
     trip1 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
     trip2 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
    }; 
    Wendsday =  { 
     trip1 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
     trip2 =   { 
      numItems = 9items; 
      time = "5:00"; 
      tripName = beachfucking; 
     }; 
    }; 
    } 

Обратите внимание, как trip2 заполняется на все дни недели.

ответ

2

Ключ «Все ваши дни» содержит один и тот же ссылочный объект event, так что изменение одного из них будет отображаться во весь день.

Чтобы решить эту проблему, объявьте dayDataDictionary следующим образом:

NSMutableDictionary *dayData = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           [event mutableCopy] ,@"Monday",[event mutableCopy],@"Tuesday", 
           [event mutableCopy],@"Wendsday",[event mutableCopy],@"Thursday",nil]; 
+0

Да, но я создаю объект nsdictionary object2, добавляя его к ключу понедельника. – cheesey

+0

Я вижу очень хороший ответ спасибо! – cheesey

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