【问题标题】:How to form an JSON formatted Mutable Array in Objective C如何在 Objective C 中形成 JSON 格式的可变数组
【发布时间】:2017-06-13 04:56:30
【问题描述】:

我需要根据响应形成一个 JSON 格式的可变数组,最初我从数据库中获取 ID,我需要检查一个空数组,然后在数组运行时根据键值向数组添加元素下次数组包含 ID 所以我必须将 KEY 和 Values 附加到各自的 ID

这是我的示例代码:

if ([hashTableArr1 containsObject:assignItmId]) {
           //     [testDict setObject:assignItmId forKey:@"id"];

                [testDict2 setObject:keyname forKey:@"keyname"];
                [testDict2 setObject:value forKey:@"value"];
                [hashTableArr addObject:testDict2];
                [testDict setObject:hashTableArr forKey:@"result"];
                [hashTableArr1 addObject:testDict];

            }
            else{

                NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]init];
                NSMutableArray *arr1 = [[NSMutableArray alloc]init];
                NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]init];
                [dict2 setObject:assignItmId forKey:@"id"];
                [dict1 setObject:keyname forKey:@"keyname"];
                [dict1 setObject:value forKey:@"value"];
                [arr1 addObject:dict1];
                [dict2 setObject:arr1 forKey:@"result"];
                [hashTableArr1 addObject:dict2];
            }

我的输出是:

 (
    {
    id = "1";
    result =         (
                    {
            keyname = "Date";
            value = "06-02-2017";
        }
    );
},
    {
    id = "1";
    result =         (
                    {
            keyname = Vendor;
            value = "";
        }
    );
},
    {
    id = "1";
    result =         (
                    {
            keyname = Owner;
            value = XXX;
        }
    );
},

预期结果:

 (
    {
    id = "1";
    result =         (
                    {
            keyname = "Purchase Date";
            value = "06-02-2017";
        },
    {
            keyname = Vendor;
            value = "";
        }, 
         {
            keyname = Owner;
            value = XXX;
        }

    );
}

请更新合适的解决方案

【问题讨论】:

  • 您是否使用循环来填充数据?如果您使用,请添加整个代码。
  • 是的,该进程将在循环模式下运行
  • @batMan007 - 如果要添加字典数组,则使用 addObjectFromArray 而不是 addObject

标签: ios objective-c arrays json nsmutablearray


【解决方案1】:

您现在要做的是每次都在结果键中添加一个数组,然后将字典添加到您的主数组中,但是为了您的预期结果,您必须在循环外维护一个数组并将对象添加到您维护的数组中在循环之外,然后将此数组添加到字典的结果键中,然后将此字典添加到主数组中。

您必须将此代码放在循环之外

NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]init];

[dict2 setObject:assignItmId forKey:@"id"];

NSMutableArray *arr1 = [[NSMutableArray alloc]init];

循环中

if ([hashTableArr1 containsObject:assignItmId]) {
       //     [testDict setObject:assignItmId forKey:@"id"];

            [testDict2 setObject:keyname forKey:@"keyname"];
            [testDict2 setObject:value forKey:@"value"];
            [arr1 addObject:testDict2];

        }
        else{

            NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]init];
            [dict1 setObject:keyname forKey:@"keyname"];
            [dict1 setObject:value forKey:@"value"];
            [arr1 addObject:dict1];

        }

循环后

            [dict2 setObject:arr1 forKey:@"result"];
            [hashTableArr1 addObject:dict2];

【讨论】:

  • 其实是DB Call中While循环中运行的进程
  • 其实我不知道你没有发布的剩余代码是什么,但你现在得到的是因为我解释的这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多