这是我的NSManagedObject:

@objc(Order)
class Order: NSManagedObject {

    @NSManaged var orderItems: Set<OrderItem> //error: Cannot specialize non-generic type 'Set'
}

有人知道为什么它不起作用吗?
OrderItem文件已创建,但可用于以下声明:
@NSManaged var orderItem: OrderItem

最佳答案

仅供参考,如果将来有人针对这个令人讨厌的bug提出这个问题,因为评论中进行了讨论。

是的,Swift中的默认Set类型是通用的,但是在这种情况下,自定义的非通用Set类遮盖了该语言的标准库所定义的类。

最好始终为您的 class 选择不同的名称,以避免名称冲突。但是,如果需要,您可以始终使用类的完全限定名称来引用所需的类。

可以在Swift.命名空间下使用标准语言类,而对于其他类,可以使用模块名称,后跟点和类名称(例如Foundation.NSString)。

关于ios - 无法专门化非通用类型“设置”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38306660/

10-10 16:14