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".
的协议方法
我在使 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".
的协议方法