[为什么无法将[HomeADItem]转换为[ADItem]?怎么了? ]
如果我用@objc标记ADItem协议,请将HomeADItem超类修改为NSObject,这是有效的。谁能帮助我,谢谢你们!
protocol ADItem {
var name: String { get }
var id: String { get }
}
class ADScrollView: UIView {
class func viewWithframe(frame: CGRect, items: [ADItem]) {}
}
struct HomeADItem: ADItem {
let name: String
let id: String
init(name: String, id: String) {
self.name = name
self.id = id
}
}
let items = [
HomeADItem(name: "test1", id: "1"),
HomeADItem(name: "test2", id: "2")
]
ADScrollView.viewWithframe(CGRectZero, items: items)
答案 0 :(得分:3)
Swift不会自动将[HomeADItem]的类型推断为[ADItem]。给它一个明确的注释应该可以解决你的问题。
let items: [ADItem] = [
HomeADItem(name: "test1", id: "1"),
HomeADItem(name: "test2", id: "2")
]
ADScrollView.viewWithframe(CGRectZero, items: items)