首页 文章

executeFetchRequest不返回NSManagedObject子类

提问于
浏览
10

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

我正在尝试对托管对象上下文进行获取请求,但它没有返回正确的子类 .

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

有任何想法吗?

enter image description here

enter image description here

enter image description here

3 回答

  • 1

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

  • 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

  • 8

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

相关问题