NSDictionary - 将相同的 id'ed 元素堆叠到另一个字典中

Posted

技术标签:

【中文标题】NSDictionary - 将相同的 id\'ed 元素堆叠到另一个字典中【英文标题】:NSDictionary - stacking same id'ed elements into another DictionaryNSDictionary - 将相同的 id'ed 元素堆叠到另一个字典中 【发布时间】:2020-03-23 13:14:37 【问题描述】:

我有一本字典,这本字典的值如下:

编辑:不是json,直接是字典

[
    "personel_id" = 23;
    "task_id" = 125;
, 
    "personel_id" = 34;
    "task_id" = 125;
, 
    "personel_id" = 40;
    "task_id" = 126;
]

我想将具有相同 task_id 的那些组合成一个二维数组或字典 - 我不知道哪个更好 - 这就像


  "personel_id" = 23,34;
  "task_id" = 125


"personel_id" = 40;
    "task_id" = 126;

125 = 23,34
126 = 40

我已经尝试了很多我在互联网上找到的东西,但无法管理它。

【问题讨论】:

请展示您的尝试 他们中的大多数都脱离了上下文,这就是我无法管理它的原因。 【参考方案1】:

试试

let dec = JSONDecoder() 
dec.keyDecodingStrategy = .convertFromSnakeCase 
let res = try! dec.decode([Root].self, from: date) 
let grouped = Dictionary(grouping: res, by:  $0.taskId )

struct Root : Codable 
    let personalId, taskId : Int 

【讨论】:

.keyDecodingStrategy = .convertFromSnakeCase,很酷,这从来都不是新鲜事!【参考方案2】:

最后,我找到了答案:

let groupedDictionary = Dictionary(grouping: self.myDictionary) 
                (personel) -> String in
                return personel.value(forKey: "task_id") as! String
            

我使用了分组功能,效果很好。

【讨论】:

以上是关于NSDictionary - 将相同的 id'ed 元素堆叠到另一个字典中的主要内容,如果未能解决你的问题,请参考以下文章

通过电子邮件发送的 NSDictionary 文件与应用程序中的相同文件不同

将 NSDictionary 转换为 Swift 字典

将 NSDictionary 对象转换为 NSData 对象,反之亦然

无法将 JSONValue 写入 NSDictionary - JSON 框架不起作用

如果 NSDictionary 键顺序从不改变,它是不是保证与初始化相同?

iCloud 中的 NSDictionary(存储视图控制器)