我试图使用泛型来避免大量的强制类型转换。我将提供一个简单的例子:
我试图使用泛型来避免大量的强制类型转换。我将提供一个简单的例子:
import UIKit
class List<T> {
let items: [T]
init(items: [T]) {
self.items = items
}
}
class ListsViewController: UIViewController {
var lists: [List<AnyObject>] = []
}
let viewController = ListsViewController()
let lists = [List(items: ["Fruits"])]
viewController.lists = lists
^ error "String" is not identical to "AnyObject"
我读过一些关于如何做的文章
class ListsViewController<T>: UIViewController
但我会在链的深处遇到问题,那里我需要保存ListsViewController实例...所以这并没有帮助。
我不理解的是为什么示例可以使用默认的Swift数组:
import UIKit
class ListsViewController: UIViewController {
var lists: [AnyObject] = []
}
let viewController = ListsViewController()
let lists = ["Fruits", "Meat"]
viewController.lists = lists
即使列表类型是[String]而不是[AnyObject],也不会出现错误。我能否在我的泛型类中获得相同的行为?
非常感谢您提前的帮助!