executeFetchRequest不返回NSManagedObject子类

vut*_*ran 10 swift xcode6

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

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

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

有任何想法吗?

在此输入图像描述 在此输入图像描述 在此输入图像描述

vut*_*ran 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
}
Run Code Online (Sandbox Code Playgroud)

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


Fab*_*nso 8

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

  • 您应该将类​​字段替换为`Project.Object`,如`ToDoList.Task`.Swift生成唯一的类,如果只使用`Task`,它将无法找到它. (2认同)
  • 很酷的工作,使用项目名称是可以理解的,因为Swift使用命名空间.这应该是正确的答案. (2认同)