executeFetchRequest не возвращает подкласс NSManagedObject
Это для XCode 6 и Swift...
Я пытаюсь сделать запрос на выборку к контексту управляемого объекта, но он не возвращает правильный подкласс.
Я уже установил подкласс в конфигурации моделировщика данных модели данных на имя моего пользовательского подкласса, а в коде он расширяет класс NSManagedObject.
Есть идеи?
3 ответа
Просто разобрался с решением.
Я должен был добавить @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
}
С помощью @objc(Task)
кажется, работает, но вы также можете просто отредактировать конфигурацию модели данных модели данных на имя ToDoList.Task
вместо просто Task
, Это тоже сработает и позволит избежать конфликтов классов, если Task
используется где-либо еще в коде Objective-C.
Убедитесь, что в инспекторе "Entity" (в правой части экрана, на панели "Утилиты") выбрано "Задача" в вашей модели, чтобы поле "Класс" было правильно заполнено "Задачей" (по умолчанию оно пустое).