Swift通用函数实现错误:无法将类型“ X”的值分配给类型“ X”

时间:2019-03-07 22:36:24

标签: swift generics

我一直在实现可解码的CoreData堆栈。总体结构就像一本书,例如,有一个Book类,可以有许多章,每章都指向书,而书则指向所有章。

作为此过程的一部分,我注意到了很多样板代码,并且我正在尝试合并一些代码。我要尝试做的一件事涉及建立这些NSManagedObjects之间的关系。为此,我创建了以下协议(请命名,仍然对细节进行哈希处理):

protocol RelatedManagedObject {
    func setRelation<T:NSManagedObject>(to object:T)
}

因此,在我的本章课中,我会写:

func setRelation<Book>(to object:Book){
    self.book = object
}

但是,这时我遇到了编译器错误:

  

无法将“ Book”类型的值分配为“ Book”类型

这建议强制强制转换为“书本”(例如object as! Book),但随后对我大吼大叫以删除强制转换或添加另一个(object as! Book as! Book)大声笑。

0 个答案:

没有答案