ExecuteFetchRequest не возвращает подкласс NSManagedObject

Это для XCode 6 и Swift...

Я пытаюсь сделать запрос выборки в контексте управляемого объекта, но не возвращает правильный подкласс.

Я уже установил подкласс в конфигурации модели данных данных модели данных имени моего пользовательского подкласса и в коде, он расширяет класс NSManagedObject.

Любые идеи?

enter image description hereenter image description hereenter 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" (правая сторона экрана, панель "Утилиты" ), когда в вашей модели выбрана "Задача", поле "Класс" правильно заполнено "Задачей" (по умолчанию она пуста).