У меня есть небольшая проблема в понимании двумерных словарей. Моя функция должна возвращать словарь для UITableView с разделами. 1 тип шаблона может иметь несколько строк шаблона. Поэтому, когда в fetchedData
есть 2 или более текста с похожими типами, они должны быть в массиве [String] с 1 ключом - String. Код, приведенный ниже, является абсолютно правильным с точки зрения соответствия. Что касается меня, то что-то не так, но хорошие автоматические доработки заставляют меня думать, что все в порядке. Очевидно, что возвращает пустой словарь [:]
Swift 1D Dictionary to 2D
func fetchTemplates() -> Dictionary<String, [String]> {
var templates: Dictionary<String, [String]> = [:]
let fetchRequest: NSFetchRequest<Template> = Template.fetchRequest()
fetchRequest.sortDescriptors = [SortDescriptor.init(key: "templateType", ascending: true)]
let fetchedData = try! context.fetch(fetchRequest)
if (!fetchedData.isEmpty) {
for templateItem in fetchedData {
templates[templateItem.templateType!]?.append(templateItem.templateText!)
}
return templates
}
else {
return templates
}
}
P.S. fetchedData
возвращается:
<Template: 0x003281h4> (entity: Template; id: 0x003281h4 <x-coredata:///Template/> ; data: {
templateText = "Example";
templateType = "First";
})
Сторона примечания: нет необходимости делать эту проверку для '! FetchedData.isEmpty'. Если он пуст, цикл for будет повторяться 0 раз, то есть он просто будет пропущен. – Alexander