我无法使Swift NSManagedObject
子类符合Objective-C协议。
我已经创建了一个模型协议,以便从我的应用程序中的其他组件中抽象出一些我的核心数据模型,这些组件没有业务知道这些东西是核心数据管理对象......
所以我的协议如下:
@protocol UserProtocol <NSObject>
@property (nonatomic) NSSet *friends;
@end
我在swift中的托管对象子类是:
class User: NSManagedObject, UserProtocol {
@NSManaged var friends: Set<User>
}
不幸的是,我被告知User
不符合UserProtocol
。我找不到一种方法来看到我的Objective-C协议的快速解释,有没有办法做到这一点?如果我能看出我能解决为什么我的swift类与协议不匹配。
答案 0 :(得分:1)
在Swift 1.2(Xcode 6.3.2)中,NSSet
映射到Set<NSObject>
,因此您必须将属性定义为
@NSManaged var friends: Set<NSObject>
满足协议。在Swift 2中,您可以定义Objective-C 协议方法使用&#34;轻量级泛型&#34;。