我有一组业务对象。每个 Business 对象都包含一组键值对,其中一个元素可以是 ContentBlocks 对象的嵌套数组。
var masterArray = [
Business(busName: "Dave's Cafe", busId: 1, website: "http://www.davescafe.com", latLong: (45.541, -45.609),
actions: [["title": "About Us", "contentId": "123", "actionType": "content"],
["title": "Website", "url": "http://www.davescafe.com", "actionType": "web"]],
contentBlocks:[
ContentBlock(busName: "Dave's Cafe", busId: 1, contentId: "123", title: "Testola!", body: "Hello there!")
]),
Business(busName:...
]
Run Code Online (Sandbox Code Playgroud)
我可以使用以下内容过滤数组以返回与唯一匹配的特定企业busId:
let rtnArray = masterArray.filter{$0.busId == id}
if rtnArray.count == 1{
return rtnArray[0]
} else {
return // feedback that no matches were found
}
Run Code Online (Sandbox Code Playgroud)
此外,我想通过过滤唯一的内容来返回特定的内容块contentId(如有必要,我也可以传递busId业务“所有者”的 )。我真的在努力前进,所以任何指向正确方向的指针都会很棒。
这是我认为您要问的问题的解决方案:
var contentBlocks = masterArray
.flatMap{$0.contentBlocks}
.flatMap{$0}
.filter{$0.contentId == "123"}
Run Code Online (Sandbox Code Playgroud)
输出[ContentBlock]包含所有ContentBlock对象中与过滤器匹配的所有Business对象。
Businesses的列表变成一个[ContentBlock?][ContentBlock?]成一个[ContentBlock][ContentBlock]过滤| 归档时间: |
|
| 查看次数: |
5706 次 |
| 最近记录: |