代码之家  ›  专栏  ›  技术社区  ›  cheesey

将数据添加到另一个NSDictionary中的NSDictionary

  •  0
  • cheesey  · 技术社区  · 8 年前

    我正在尝试将数据添加到 NSMutableDictionary 它嵌套在其他字典中。

    在运行添加数据的代码之前开始输出

    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是如何为一周中的所有天填写的。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Nirav D    8 年前

    您的所有日期键都包含相同的引用对象 event ,因此更改其中一个,将反映到所有天的关键。

    dayData Dictionary 这样地。

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