Как ссылка на метод экземпляра 'encode' в 'Array' может соответствовать 'Encodable' - PullRequest
1 голос
/ 29 марта 2020

У меня есть сущность CoreData с именем "Lekarstvo". Структура этого объекта такая же, как у JSON. Я хочу перенести эту информацию в файл JSON. Как мне это сделать? Прямо сейчас у меня возникает эта ошибка, и я действительно не знаю, как ее исправить.

Для ссылки на метод экземпляра 'encode' в 'Array' требуется, чтобы Lekarstvo соответствовало 'Encodable'

func getAllData() {

     var userArr :[Lekarstvo] = []

      do{
               userArr =  try moc.fetch(Lekarstvo.fetchRequest())

      }catch{
              print(error)
      }

        guard let encoded = try? JSONEncoder().encode(userArr) else {return}
            if let jsonString = String(data: encoded, encoding: .utf8) {
                print(jsonString)
            }

            guard let url = URL(string: "https://api.myjson.com/bins/vw7sg") else {return}
                        var request = URLRequest(url: url)
                            request.addValue("application/json", forHTTPHeaderField: "Content-Type")

                            request.httpMethod = "PUT"
                            request.httpBody = encoded

enter image description here

Ответы [ 3 ]

1 голос
/ 29 марта 2020

Я решил свою проблему, добавив это для l oop, и теперь оно работает.

  for data in userArr as! [NSManagedObject] {
        let dossi = LecarstvO(id: data.value(forKey: "id") as! Int,
                              kgPazient: data.value(forKey: "kgPazient") as! Int,
                              goPazient: data.value(forKey: "goPazient") as! Int,
                              fromMin: data.value(forKey: "fromMin") as! CGFloat,
                              toMin: data.value(forKey: "toMin") as! CGFloat,
                              fromMax: data.value(forKey: "fromMax") as! CGFloat,
                              toMax: data.value(forKey: "toMax") as! CGFloat,
                              isMin: data.value(forKey: "isMin") as! Bool,
                              isMax: data.value(forKey: "isMax") as! Bool,
                              mjarka: data.value(forKey: "mjarka") as! String,
                              maxDoza: data.value(forKey: "maxDoza") as! CGFloat,
                              firstDoza: data.value(forKey: "firstDoza") as! CGFloat,
                              priemI: data.value(forKey: "priemI") as! Int,
                              priemII: data.value(forKey: "priemII") as! Int,
                              opis: data.value(forKey: "opis") as! String,
                              lekarstvo: data.value(forKey: "lekarstvo") as! String,
                              grupa: data.value(forKey: "grupa") as! String)
                     self.model.database.append(dossi)
    }
1 голос
/ 29 марта 2020

для данных в userArr как! [NSManagedObject]

0 голосов
/ 29 марта 2020

Убедитесь, что ваша структура / класс соответствует Codable (или Encodable) + все его подполя должны соответствовать одному и тому же протоколу.

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