Swift类“不实现(objc)协议”

时间:2015-06-30 11:11:38

标签: objective-c swift interop protocols

我无法使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类与协议不匹配。

enter image description here

1 个答案:

答案 0 :(得分:1)

在Swift 1.2(Xcode 6.3.2)中,NSSet映射到Set<NSObject>,因此您必须将属性定义为

@NSManaged var friends: Set<NSObject>

满足协议。在Swift 2中,您可以定义Objective-C 协议方法使用&#34;轻量级泛型&#34;。