这是我创建的自定义类:
import UIKit
import CoreBluetooth
protocol vaBeanDelegate
{
}
class vaBean: CBCentralManager,CBCentralManagerDelegate {
override init!(delegate: CBCentralManagerDelegate!,queue: dispatch_queue_t!) {
println("bean initialised")
super.init()
self.delegate = delegate
}
func centralManager(central: CBCentralManager!,diddiscoverPeripheral peripheral: CBPeripheral!,advertisementData: [NSObject : AnyObject]!,RSSI: NSNumber!) {
println("discovered peripheral(s)")
}
func centralManagerDidUpdateState(central: CBCentralManager!) {
switch (central.state) {
case .PoweredOff:
println("hardware is powered off")
case .PoweredOn:
println("hardware is powered on and ready")
//centralManager.scanForperipheralsWithServices(nil,options: nil)
case .Resetting:
println("hardware is resetting")
case .Unauthorized:
println("state is unauthorized")
case .UnkNown:
println("state is unkNown");
case .Unsupported:
println("hardware is unsupported on this platform");
}
}
func centralManager(central: CBCentralManager!,didConnectPeripheral peripheral: CBPeripheral!) {
println("didConnectPeripheral")
}
}
我只是不知道如何从我的主ViewController初始化它.当我尝试以下操作时,它会抱怨ViewController不符合CBCentralManagerDelegate:
import UIKit
class ViewController: UIViewController {
var myBean: vaBean!
override func viewDidLoad() {
super.viewDidLoad()
println("bluetoothTest v1.00")
println("opening bluetooth connection ...")
myBean = vaBean(delegate: self,queue: nil)
}
override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()}
}
解决方法
Swift和Objective-C只是单一继承,一个类不能有多个超类.
当您在声明中看到Swift代码看起来像多个超类时,您会看到最多,声明中的一个名称是超类,其他名称是协议名称.
在Objective-C中,这些将用<有角度的括号>写成.但Swift的情况并非如此.