ExecuteFetchRequest не возвращает подкласс NSManagedObject
Это для XCode 6 и Swift...
Я пытаюсь сделать запрос выборки в контексте управляемого объекта, но не возвращает правильный подкласс.
Я уже установил подкласс в конфигурации модели данных данных модели данных имени моего пользовательского подкласса и в коде, он расширяет класс NSManagedObject.
Любые идеи?
![enter image description here]()
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
Просто понял решение.
Мне пришлось добавить атрибут @objc
, чтобы класс совместим с Objective-C.
Теперь запрос на выборку возвращает правильный результат Tasks[]
import Foundation
import CoreData
@objc(Task) // make compatible with objective-c
class Task : NSManagedObject
{
@NSManaged var note: String!
@NSManaged var completed: Bool
}
Ссылка: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-XID_36
Ответ 2
Использование @objc(Task)
похоже работает, но вы также можете просто отредактировать конфигурацию модели данных данных модели данных с именем ToDoList.Task
, а не просто Task
. Это тоже будет работать и избегать конфликтов классов, если Task
используется где-либо еще в коде Objective-C.
Ответ 3
Убедитесь, что в инспекторе "Entity" (правая сторона экрана, панель "Утилиты" ), когда в вашей модели выбрана "Задача", поле "Класс" правильно заполнено "Задачей" (по умолчанию она пуста).