Предустановленные значения Swift Core Data - PullRequest
0 голосов
/ 16 января 2019

Есть ли способ установить некоторые предустановленные значения для основных данных? В основном добавление значений по умолчанию, которые нельзя редактировать и которые одинаковы для всех?

Спасибо!

Вот как я получаю данные:

func attemptFetch(){
    let fetchRequest: NSFetchRequest<Course> = Course.fetchRequest()
    let dataSort = NSSortDescriptor(key: "title", ascending: true)
    fetchRequest.sortDescriptors = [dataSort]


    let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)

    controller.delegate = self
    self.controller = controller

    do {
        try controller.performFetch()
    } catch {
        let error = error as NSError
        print("\(error.debugDescription)")
    }
}

и вот как я получаю массив:

if let objs = controller.fetchedObjects, objs.count > 0 {
        ....
}

1 Ответ

0 голосов
/ 16 января 2019

Итак, у вас есть два варианта, которые я могу придумать. Просто покажите или добавьте.

  1. Покажите это. Возьмите массив, который вы используете для отображения CoreData, и добавьте данные со статическими значениями. Я думаю, что это самый простой.

</p> <pre><code>var CoreDataStringArray = [String]() var CoreDataImage1Array = [UIImage]() func fetchData() { //Static values CoreDataStringArray = ["Item 1", "Item 2", Item 3", "Item 4", "Item 5"] CoreDataImage1Array = [UIImage(named: "item1"),UIImage(named: "item2"),UIImage(named: "item3"),UIImage(named: "item4"),UIImage(named: "item5")] //Now fetch the Core Data Values and the user will see a full list of them mixed together. }

  1. Вы можете добавить их при первом запуске приложения. Вот как я их сохраняю, я запускаю цикл for, чтобы перекачать каждый из них.

// Внутри класса (импорт CoreData выше)

    let moc = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext

    override func viewDidLoad() {
        super.viewDidLoad()

        let openedbefore = UserDefaults.standard.bool(forKey: "openedbefore")

if openedbefore == false {
 //Add data

    var CoreDataStringArray = ["Item 1", "Item 2", Item 3", "Item 4", "Item 5"]
    var CoreDataImage1Array = [UIImage(named: "item1"),UIImage(named: "item2"),UIImage(named: "item3"),UIImage(named: "item4"),UIImage(named: "item5")]



     for index in 0...CoreDataStringArray.count-1 {
        let entityDescription = NSEntityDescription.entity(forEntityName: "Entity", in: moc)

        let item = Entity(entity: entityDescription!, insertInto: moc)

        item.name = "\(CoreDataStringArray[index])"
        item.image = UIImagePNGRepresentation(CoreDataImage1Array[index]) as! NSData

        do {
            try moc.save() // Save the static values to CoreData
        } catch {
            return
        }
     }
  }

  UserDefaults.standard.set(true, forKey: "openedbefore")
}
</code>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...