У меня есть массив бизнес-объектов. Каждый бизнес-объект содержит массив пар ключ-значение, один из которых может быть вложенным массивом объектов ContentBlocks.Swift фильтр вложенного массива объектов
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:...
]
Я могу выбирать массив для возврата к конкретной компании, соответствующей уникальный busId
, используя что-то вроде этого:
let rtnArray = masterArray.filter{$0.busId == id}
if rtnArray.count == 1{
return rtnArray[0]
} else {
return // feedback that no matches were found
}
Кроме того, я хотел бы вернуть определенную contentBlock путем фильтрации по уникальному contentId
(при необходимости я также могу передать busId
владельца «Бизнес»). Я действительно изо всех сил пытаюсь двигаться вперед, поэтому любые указатели в правильном направлении были бы замечательными.
благодарит за отличный ответ. Когда я пытаюсь это сделать, компилятор жалуется: «Значение типа [ContentBlock]» не имеет ни одного члена «contentId'' в последней строке. Любая идея, что я делаю неправильно? – James
Ну, если contentID является ключом, он будет написан как '$ 0 [" contentId "]' для доступа к значению этого ключа. Компилятор дает вам ошибку, потому что в настоящее время он доступен, как свойство, которое я предполагаю, что это не так. – NSGangster
@NSGangster Спасибо - я пробовал это, но он снова жалуется, на этот раз с 'Не могу подстроить значение типа '[ContentBlock]' с индексом типа« String ». Поэтому я пробовал без кавычек - та же ошибка ... Хммм! – James