Хобрук: Ваш путь к мастерству в программировании

Несколько запросов на выборку?

В настоящее время у меня есть UITableView с 2 разделами, в которых используется NSFetchedResultsController. Я пытаюсь понять, как отображать разные объекты в разных разделах. У меня есть FOLDER объектов, а также TAG объектов. Я хочу отобразить все это в каждом разделе, то есть в разделе 1 все FOLDER, в разделе 2 все TAGS.

Отношения идут: FOLDER (one to many)-> MOVIE (many to many)-> TAGS

Как мне этого добиться? Мне нужны 2 отдельных tableView или использовать один tableView с 2 разными запросами на выборку? Пожалуйста помоги!

РЕДАКТИРОВАТЬ: код Fetch и tableView cellForRowAt.

  private let appDelegate = UIApplication.shared.delegate as! AppDelegate
   private let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
   private var fetchedRC: NSFetchedResultsController<Folder>!

   override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    refresh()
   }

   private func refresh() {
    do {
        let request = Folder.fetchRequest() as NSFetchRequest<Folder>
        request.predicate = NSPredicate(format: "name CONTAINS[cd] %@", query)
        let sort = NSSortDescriptor(keyPath: \Folder.name, ascending: true)
        request.sortDescriptors = [sort]
        do {
            fetchedRC = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
            fetchedRC.delegate = self
            try fetchedRC.performFetch()
        } catch let error as NSError {
            print("Could not fetch. \(error), \(error.userInfo)")
        }
    }
   }

   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "folderCell", for: indexPath) as! FolderTableViewCell
    let folder = fetchedRC.object(at: indexPath)
    cell.update(with: folder)
    cell.layer.cornerRadius = 8
    cell.layer.masksToBounds = true
    return cell
   }

  • репо с открытым исходным кодом? 15.07.2019
  • @FaZeUnempl0yedd Нет, это просто проект. 15.07.2019
  • Я мог бы посмотреть, если бы он был открыт на gitlab. 15.07.2019
  • @FaZeUnempl0yedd Хотел бы я, ха-ха. Есть ли у вас какие-либо идеи по поводу проблемы? 15.07.2019
  • Вставьте некоторый код, касающийся ваших делегатов/источников данных TableViews. 15.07.2019
  • @Olympiloutre Я добавил код выше. Это код, который вы хотели? Если нет, просто спросите! 15.07.2019

Ответы:


1

Используйте 2 FRC для ваших 2 разделов.

Один получает ваш запрос на выборку папки, а другой - теги, все в одном табличном представлении. Ваши методы делегата tableview заботятся о том, к чему вы хотите получить доступ. С этим довольно легко справиться таким образом. Это только усложняется, если у вас есть более двух разделов. Таким образом, ваш делегат tableview знает по разделу == 0 или 1, к какому FRC обращаться.

15.07.2019
Новые материалы

Получение стоковых обновлений с помощью Python
Для начинающего финансового аналитика Введение Описание: Этот проект Python создает скрипт для получения текущих обновлений акций с финансового веб-сайта Yahoo. Для этого проекта мы..

Это все, что вам нужно знать о Kotlin в 2022 году
Добро пожаловать! Kotlin — это язык программирования, популярность которого, кажется, растет, его действительно можно использовать для создания чего угодно, и если вы хотите узнать о Kotlin,..

Текстовый графический интерфейс с Lanterna на Java
Мой опыт работы с компьютерами (и текстовыми графическими пользовательскими интерфейсами) начался еще в восьмидесятых, когда я был ребенком, на дне рождения друга. Это был «новенький» Amstrad..

Перезарядите свой мозг: умопомрачительный потенциал мозговых компьютерных интерфейсов
Способность читать свои мысли и управлять объектами разумом долгое время были предметом человеческого любопытства, ограниченного областью научной фантастики… то есть до сих пор? С технологией,..

Основы C# — Нулевой оператор объединения (??)
Оператор ?? называется null-coalescing operator . Этот оператор используется для предоставления значения по умолчанию, если значение операнда в левой части оператора равно null ...

Сравнение номеров версий в C++ с использованием синтаксического анализа строк
Номера версий обычно используются для обозначения развития или обновлений программного обеспечения или любого другого продукта. При работе с номерами версий в C++ может быть полезно сравнить две..

В мир искусственного интеллекта…
ИИ — это новое топливо в современном мире. Куда бы вы ни обратились, с кем бы вы ни разговаривали — они, как правило, упоминают об ИИ хотя бы раз в ходе разговора. ИИ гудит повсюду. У каждого..