Как я могу получить массив к NSManagedObject - PullRequest
0 голосов
/ 17 марта 2020

Извините, если я задаю глупые вопросы, но я новичок в Swift. Я создаю приложение, и пока все идет хорошо. Но теперь я хочу удалить некоторые строки из моего табличного представления, которые получают из массива со строками. И затем я хочу сохранить / извлечь это, используя основные данные. Я считаю, что у меня есть код для этого, но проблема в том, что я пытаюсь сохранить массив, полный строк. поэтому я получаю сообщение об ошибке: «Невозможно преобразовать значение типа« Строка »в ожидаемый тип аргумента« NSManagedObject ». И поэтому мне интересно, как я могу решить это? Есть ли способ как-нибудь добавить эти строки в NSManagedObject?

Вот мой код:

массив: enter image description here

и вот код:

import UIKit
import CoreData




class tableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return (List.count)

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->     UITableViewCell {
    let cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
    cell.textLabel?.text = List.self[indexPath.row]
    cell.textLabel?.textColor = UIColor.white
    cell.backgroundColor = UIColor.clear




    return(cell)

}

    func tableView(_ tableView: UITableView, commit editingStyle:     UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

        let context = (UIApplication.shared.delegate as!     AppDelegate).persistentContainer.viewContext

        if editingStyle == .delete{
            let rows = List[indexPath.row]
            context.delete(rows)
            (UIApplication.shared.delegate as! AppDelegate).saveContext()

            do{
                List = try context.fetch(MealsMenu.fetchRequest()) as! [String]
            }
            catch{
                print(error)
            }
        }
        myTableView.reloadData()

}





@IBOutlet weak var myTableView: UITableView!

override func viewDidAppear(_ animated: Bool) {
    myTableView.reloadData()
}

override func viewDidLoad() {
    super.viewDidLoad()
    CoredataClass.saveItems()
    CoredataClass.loadData()
}

}

1 Ответ

2 голосов
/ 17 марта 2020

Вам нужно будет создать такую ​​функцию, как эта

Представьте, что вашей сущностью является Recipe с строковым атрибутом recipeName, который содержит название рецепта.

func fetchPersistentData() -> [String] {


    var recipes = [String]()

    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {

        return recipes
    }

    let managedContext = appDelegate.persistentContainer.viewContext

    let fetchRequest = NSFetchRequest<Recipe>(entityName: "Recipe")

    do {
        let fetchedResults = try managedContext.fetch(fetchRequest)

        if fetchedResults.count > 0 {

            recipes = fetchedResults.map { ("\($0.recipeName)")}

            return recipes
        }

    } catch let error as NSError {
        // Wrong handling
        print(error.description)
    }

    return recipes
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...