2015-06-30 89 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 協議方法。