【发布时间】:2015-02-04 04:13:54
【问题描述】:
这是我的设置:
protocol Client {
var identifier: NSUUID { get }
}
class PeripheralClient: NSObject, Client {
var identifier: NSUUID {
get {
return peripheral.identifier
}
}
}
protocol NetworkManager {
var clients: [Client] { get set }
}
class CentralNetworkManager: NSObject, NetworkManager {
var clients = [Client]()
var peripheralClients: [PeripheralClient] {
get {
return clients as [PeripheralClient]
}
}
}
第一次访问 peripheralClients 数组时出现此运行时错误:数组元素无法桥接到 Objective-C。
从这个answer 到有类似错误的问题,看起来swift 要求数组中的项目在转换为NSArray 时与AnyObject 兼容。所以这意味着 Swift 的 Array 类型转换使用的是 NSArray,因此我无法从类型为协议的 Array 中向下转换。
任何人有一个很好的建议来解决这个问题?
【问题讨论】: