2015-06-30 93 views
0

我很难使Swift NSManagedObject子类符合Objective-C协议。Swift类“不实现(objc)协议”

我创建了一个模型协议,以抽象有些我从我的应用程序,它没有生意知道这些事情的其他组件的核心数据模型是核心数据管理对象...

所以我有一个协议如下:

@protocol UserProtocol <NSObject> 

@property (nonatomic) NSSet *friends; 

@end 

而且在我迅速管理对象子类:

class User: NSManagedObject, UserProtocol { 

    @NSManaged var friends: Set<User> 

} 

不幸的是,我被告知User不符合UserProtocol。我找不到一种方法来查看我的Objective-C协议的快速解释,有没有办法做到这一点?如果我能看出我可以计算出为什么我的swift类不符合协议。

enter image description here

+0

也许你需要getter和setter?另外,'var Set'不等于'NSMutableSet'吗? – Mundi

+0

'@ NSManaged'需要'var'。你有一点,虽然也许集解析为NSMutableSet。那么在Objective-C的一段代码中没有获得Swift视图的方法吗? – Daniel

+1

您正在使用哪种Xcode版本?在Swift 1.2(Xcode 6.3.2)中,'NSSet'映射到'Set ',所以你必须将该属性定义为'@NSManaged var friends:Set '来满足协议。 –

回答

1

在夫特1.2(6.3.2的Xcode)NSSet被映射到Set<NSObject>,所以你将不得不定义属性作为

@NSManaged var friends: Set<NSObject> 

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