executeFetchRequest不返回NSManagedObject子类

时间:2014-06-06 01:49:12

标签: swift xcode6

这适用于XCode 6和Swift ......

我试图向托管对象上下文发送获取请求,但它没有返回正确的子类。

我已经将数据模型数据建模器配置中的子类设置为我的自定义子类的名称,并且在代码中,它正在扩展NSManagedObject类。

有什么想法吗?

enter image description here enter image description here enter image description here

3 个答案:

答案 0 :(得分:23)

刚刚找到解决方案。

我必须添加@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

答案 1 :(得分:8)

使用@objc(Task)似乎正在运行,但您也可以将数据模型数据建模器配置编辑为名称ToDoList.Task,而不仅仅是Task。如果在Objective-C代码中的任何其他地方使用Task,这也会起作用并避免类冲突。

答案 2 :(得分:1)

检查以确保在“实体”检查器(屏幕右侧,“实用工具”面板)中,在“模型”中选择“任务”时,其“类”字段已正确填写“任务”(默认情况下为空)。