В принципе, вы создаете две модели данных, одну для папок, другую для todo.
В модели папки, установить связь с ToDo-модели (один-ко-многим, Обратнозависимым умелым, удалить правило: каскадный)
Использование NSFetchedResultsController
для извлечения записи из SQLite, это будет выглядеть следующим образом:
let fetchRequset = NSFetchRequest(entityName: "Folder")
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
fetchRequset.sortDescriptors = [sortDescriptor]
self.fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequset, managedObjectContext: managedContext, sectionNameKeyPath: nil, cacheName: nil)
do {
try fetchedResultsController.performFetch()
} catch let error as NSError {
print(error.localizedDescription)
}
Заселите результат NSFetchedResultsController
для Tableview
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return (self.fetchedResultsController.sections?.count)!
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let sectionInfo = fetchedResultsController.sections![section]
return sectionInfo.numberOfObjects
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("folderTableViewCell", forIndexPath: indexPath) as! FolderTableViewCell
let folder = fetchedResultsController.objectAtIndexPath(indexPath) as! Folder
cell.folder = folder
return cell
}
Фот TODO Tableview, у вас есть только сдать объект в NSFetchedResultsCo ntroller результат, когда выполняют SEGUE:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedFolder = self.fetchedResultsController.objectAtIndexPath(indexPath) as? Folder
self.performSegueWithIdentifier("todoView", sender: self)
}
операции Все CoreData, такие как удаление, создание, изменение .. вам нужно использовать NSManagedObjectContext. Поскольку у вас уже есть базовые знания об этом, я оставлю это вам
Надеюсь, что эта помощь
Благодарим за отличный ответ. Также для меня возник вопрос о том, как добавить массив массивов объектов (списки дел) в Core Data, я обнаружил, что должен использовать отношения «многие ко многим». Теперь это работает. –