Куда поместить предварительно заполненную базу данных Realm? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть список категорий и подкатегорий, которые я хотел бы предварительно заполнить для пользователя.

Согласно https://www.raywenderlich.com/9220-realm-tutorial-getting-started вы создаете функцию:

private func populateDefaultCategories() {
  if categories.count == 0 { // 1
    try! realm.write() { // 2
      let defaultCategories =
        ["Birds", "Mammals", "Flora", "Reptiles", "Arachnids" ] // 3
      
      for category in defaultCategories { // 4
        let newCategory = Category()
        newCategory.name = category
        
        realm.add(newCategory)
      }
    }
    
    categories = realm.objects(Category.self) // 5
  }
}

А затем вызовите его в viewDidLoad.

Но, чтобы соответствовать модели MVC, мне не имеет смысла помещать это в контроллер представления.

Где мне его поставить?

Я попытался создать быстрый файл и создать класс:

import Foundation
import RealmSwift

class SetupCategories {
    
    let realm = try! Realm()
    lazy var categories: Results<Category> = { self.realm.objects(Category.self) }()

public func populateDefaultCategories() {
  if categories.count == 0 { // 1
    try! realm.write() { // 2
      let defaultCategories =
        ["Birds", "Mammals", "Flora", "Reptiles", "Arachnids" ] // 3

      for category in defaultCategories { // 4
        let newCategory = Category()
        newCategory.name = category

        realm.add(newCategory)
      }
    }

    categories = realm.objects(Category.self) // 5
  }
}

А затем я попытался вызвать его в appDelegate didFinishLaunchingWithOptions.

Но это не сработало. Я получаю сообщение «Результат инициализатора« SetupCategories »не используется».

Что я делаю не так? Как мне go об этом?

...