<分区>
这是我的代码:
import UIKit
class GenericClass<T: NSObject> {
let generic: T
let somethingElse: String
init(generic: T, somethingElse: String) {
self.generic = generic
self.somethingElse = somethingElse
}
func wrap<P: NSObject>(with: P) -> GenericClass<P> {
return GenericClass(generic: with, somethingElse: somethingElse)
}
}
class Person {
func transform() {
let classA: GenericClass<UIViewController> = GenericClass(generic: UIViewController(nibName: nil, bundle: nil), somethingElse: "")
let rewrapped: GenericClass<UIView> = classA.wrap(with: UIView())
}
}
我得到这个编译器错误:
Generic parameter 'P' could not be inferred
编译器无法推断类型,但我不明白为什么在方法中有必要这样做。它应该只返回具有指定类型的 GenericClass。
我想用另一种类型替换 generic
并保持 somethingElse
完整。为什么它不适用于 wrap
方法?