executeFetchRequest doesn't return the NSManag

2019-03-25 11:39发布

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 set the subclass in the data model data modeler configuration to the name of my custom subclass and in the code, it is extending the NSManagedObject class.

Any ideas?

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

标签: swift xcode6
3条回答
唯我独甜
2楼-- · 2019-03-25 12:07

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).

查看更多
相关推荐>>
3楼-- · 2019-03-25 12:13

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.

查看更多
爱情/是我丢掉的垃圾
4楼-- · 2019-03-25 12:23

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

查看更多
登录 后发表回答