【问题标题】:Filtering a dictionary过滤字典
【发布时间】:2018-12-30 23:17:37
【问题描述】:
struct FAQList: Codable {
let valid: Bool?
let message: String?
let faqs: [String: [FAQ]]?
}

struct FAQ: Codable {
let name, question, answer: String?
}

是我的数据模型。

{
 "valid": true,
 "message": "Faqs fetched successfully!",
  "faqs": {
    "FAQ8": [
      {
    "name": "FAQ8",
    "question": "Question 2",
    "answer": "Answer 2"
  },
  {
    "name": "FAQ8",
    "question": "Question 3",
    "answer": "Answer 3"
  },
  {
    "name": "FAQ8",
    "question": "Question 4",
    "answer": "Answer 4"
  },
  {
    "name": "FAQ8",
    "question": "Question 5",
    "answer": "Answer 5"
  },
  {
    "name": "FAQ8",
    "question": "Question 6",
    "answer": "Answer 6"
  },
  {
    "name": "FAQ8",
    "question": "Question 7",
    "answer": "Answer 7"
  },
  {
    "name": "FAQ8",
    "question": "Question 8",
    "answer": "Answer 8"
  },
  {
    "name": "FAQ8",
    "question": "sdrt",
    "answer": ""
  }
],
"abcs1sd122": [
  {
    "name": "abcs1sd122",
    "question": "sD",
    "answer": "ssaf"
  }
],
"ASDFG": [
  {
    "name": "ASDFG",
    "question": "kalpana",
    "answer": "UI developer"
  },
  {
    "name": "ASDFG",
    "question": "asDFGHJWQ",
    "answer": "ERTYU"
  },
  {
    "name": "ASDFG",
    "question": "sdede",
    "answer": "ERTYU"
  }
],
"test": [
  {
    "name": "test",
    "question": "ASdfg",
    "answer": "AASDFTRYU"
  },
  {
    "name": "test",
    "question": "ASDRFT",
    "answer": "Q"
  },
  {
    "name": "test",
    "question": "SADRTY",
    "answer": "WQEW3E45R6"
  },
  {
    "name": "test",
    "question": "zxcVG",
    "answer": "Sadfgh"
  },
  {
    "name": "test",
    "question": "saesrtyu",
    "answer": "3q5w46e567890"
  }
]
}
}

是我的回应。

现在。我需要过滤这个 'faqs' 字典以形成基于键的主题列表数组。

像 'FAQ8' 或 'abcs1sd122' 是一个数组,由所有问题分别具有 'name' 为 'FAQ8' 或 'abcs1sd122' 组成。

我用过这个,

 let FAQ8 = self.viewModel.faqsList.faqs?.filter({ $0.key == "FAQ8" })

但它显示错误。

请建议实现这一目标的最佳方法。

【问题讨论】:

  • 错误是什么?
  • 为什么所有结构成员都声明为可选? JSON 清楚地包含所有键

标签: ios arrays swift dictionary filter


【解决方案1】:

如果您想要名称为 FAQ8 的所有常见问题解答,您为什么不简单地写这个?

let faqs = self.viewModel.faqsList.faqs?["FAQ8"]

【讨论】:

  • 我在发布问题后发现了这一点。感谢您的确认。
猜你喜欢
  • 2016-02-21
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多