@Behtold_A

Как получить список доступных полей сущности Core data?

Есть задача парсить данные приходящие с сервера и записывать их в сущность. Данные приходят в формате JSON, благополучно парсятся в dictonary и даже сохраняются с помощью метода entity.setValuesForKeys(dictonary). Однако, есть небольшая проблема. Дело в том, что сервер в выдаче иногда добавляет дополнительные поля, которые отсутствуют в entity. От чего приложение падает...
Например есть класс:
public class User {
       @NSManaged public var id: Int64
       @NSManaged public var name: String
}


Приходит JSON, который преобразуется в dictonary : [String:Any]
{"id":1,"name":"Andrew"}
В экземпляр все записывается благополучно, однако стоит прийти дополнительному полю:
{"id":1,"name":"Andrew","temp":"Hop-hey"}, Компилятор выдает сообщение, что поля "temp" нет в классе User. Можно ли как то получить список названий всех доступных полей в сущности, чтобы в дальнейшем сравнить их с данными из JSON и отбросить лишнее.
Варианты добавления недостающих полей или переменных в объект не рассматриваются. Используется SWIFT 3.
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
@AntonGorb
iOS Developer (Cherkassy)
Entity description

Обрати внимание на свойства:
  • var propertiesByName
  • var attributesByName

Пример кода:
for (name, attr) in  newManagedObject.entity.attributesByName {
    let attrType = attr.attributeType // NSAttributeType enumeration for the property type
    let attrClass = attr.attributeValueClassName ?? "unknown"
    print(name, "=", newManagedObject.valueForKey(name), "type =", attrClass)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы