【问题标题】:How can I predicate an array dictionaries to find matching value如何谓词数组字典以查找匹配值
【发布时间】:2017-04-15 17:07:12
【问题描述】:

我有以下字典:

let object = [[String : AnyObject]]()
/*
{  
"allProducts":[  
  {  
     "productDetails":[  
        {  
           "productName":"My product which I am unable to get by NSPredicate."
        }
     ]
  }
]
}
*/

我想通过谓词获取“productName”。

尝试过的代码:

let predicate = NSPredicate(format: "productName CONTAINS[c] '\(text)'")
arrayTableData = allProducts.filter() { predicate.evaluate(with: $0["productDetails"]) }

【问题讨论】:

  • 你能用swift语法写你object的内容吗?我无法读取 JSON
  • 'object' 将具有注释的 JSON 对象。
  • 我知道,但我不擅长阅读 JSON...
  • 请将对象复制粘贴到jsonformatter.curiousconcept.com

标签: arrays swift dictionary search nspredicate


【解决方案1】:

您不需要(也不应该)将NSPredicate 用于这么简单的事情。

arrayTableData = allProducts.filter() { product in
    return product["productDetails"]?.contains { details in
        return details["productName"]?.contains(text) ?? false
    } ?? false
}

【讨论】:

  • 但是 'productDetails' 有一个字典数组,并且字典有一个键“productName”。
  • 等等,每个 productDetails 都是一个字典数组,每个字典都有一个键:值对? ...为什么?
  • 响应比较详细,我刚刚写了需要提取的值。
猜你喜欢
  • 1970-01-01
  • 2010-09-26
  • 2021-07-04
  • 2015-02-25
  • 2012-04-05
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多