Swift class "does not implement (objc) protocol"

Swift class "does not implement (objc) protocol"

我在使 Swift NSManagedObject subclass 符合 Objective-C 协议时遇到问题。

我创建了一个模型协议,以便从我的应用程序中的其他组件中抽象出我的核心数据模型,这些组件没有业务知道这些东西是核心数据管理对象...

所以我有一个协议如下:

@protocol UserProtocol <NSObject>

@property (nonatomic) NSSet *friends;

@end

而我在 swift 中的托管对象 subclass 是:

class User: NSManagedObject, UserProtocol {

    @NSManaged var friends: Set<User>

}

不幸的是我被告知 User 不符合 UserProtocol。我找不到查看 swift 对我的 Objective-C 协议的解释的方法,有没有办法做到这一点?如果我能看到我能弄清楚为什么我的 swift class 与协议不匹配。

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

@NSManaged var friends: Set<NSObject>

满足协议。在 Swift 2 你可以定义 Objective-C 使用 "lightweight generics".

的协议方法