我必須履行其在Objective-C像這樣定義的協議要求:如何在Swift中使用NSSet <Class>(導出爲Set <NSObject>)?
@protocol AProtocol <NSObject>
+ (NSSet<Class> * _Nullable)someClasses;
@end
我想實現寫在斯威夫特的子類此協議。我想返回一組另一個對象的類。我想返回類的定義是這樣的:
class B: NSObject {}
符合協議的類是這樣定義的:
class A: NSObject, AProtocol {
static func someClasses() -> Set<NSObject>? {
return [B.self]
}
}
爲什麼NSSet<Class>
橋接Set<NSObject>
,而不是設置?
此解決方案崩潰了,我該如何解決問題?
有一個問題,我沒有看到'Set?'如何返回協議上的'NSSet '返回類型。不應該是'Set '?此外,請包含AppDelegate類型的聲明。 –
@PatrickGoley是的,我完全理解這種困惑,這讓我感到困惑。正如有人向我解釋的那樣:Class只是Objective-C中的一個對象,這就是爲什麼這樣橋接的原因。我認爲他們在其他情況下將它連接到AnyClass,但由於AnyClass不符合Hashable(這是Set的先決條件),這是不可能的。 Xcode生成這樣的協議接口。 AppDelegate是由Xcode生成的,我將它添加到原始文章中。 – Ben
好的,問題本身已解決,我將編輯問題並添加答案,也許這對其他人有幫助。 – Ben