executeFetchRequest doesn't return the NSManagedObject subclass

前端 未结 3 538
猫巷女王i
猫巷女王i 2021-02-14 11:20

This is for XCode 6 and Swift...

I\'m trying to make a fetch request to the managed object context but it\'s not returning the correct subclass.

I have already s

相关标签:
3条回答
  • 2021-02-14 11:26

    Just figured out the solution.

    I had to add the @objc attribute to allow the class to be compatible with Objective-C.

    Now the fetch request is returning a correct result of Tasks[]

    import Foundation
    import CoreData
    
    @objc(Task) // make compatible with objective-c
    class Task : NSManagedObject
    {
        @NSManaged var note: String!
        @NSManaged var completed: Bool
    }
    

    Reference: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-XID_36

    0 讨论(0)
  • 2021-02-14 11:38

    Using @objc(Task) seems to be working but you could also just edit the data model data modeler configuration to the name ToDoList.Task instead of just Task. That will work too and avoid Class conflicts if Task is used anywhere else in the Objective-C code.

    0 讨论(0)
  • 2021-02-14 11:47

    Check to make sure that in the "Entity" inspector (right side of the screen, Utilities pane) when Task is selected in your Model that its Class field is properly filled in with "Task" (it's blank by default).

    0 讨论(0)
提交回复
热议问题