2015-03-17 9 views
0

Я новичок в быстрой разработке IOS, я реализую класс PeripheralHandler, в котором я инициализирую экземпляр CBPeripheralManager. Я выполнил необходимые методы делегата, но все же показывает ошибку 'Type PeripheralHandler ->() -> PeripheralHandler!' does not confirm to CBPeripheralManagerDelegate.Класс не подтверждает протокол CBPeripheralManagerDelegate

import Foundation 
import CoreBluetooth 

class PeripheralHandler : NSObject, CBPeripheralManagerDelegate{ 

    var myPeripheralManager = CBPeripheralManager(delegate:self, queue: nil) 

    func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager!) 
    { 
     println("peripheralManagerDidUpdateState called !!!") 

     switch peripheral.state 
     { 
     case CBPeripheralManagerState.PoweredOff: 
      println("BLE OFF") 
     case CBPeripheralManagerState.PoweredOn: 
      println("BLE ON") 
     case CBPeripheralManagerState.Unknown: 
      println("NOT RECOGNIZED") 
     case CBPeripheralManagerState.Unsupported: 
      println("BLE NOT SUPPORTED") 
     case CBPeripheralManagerState.Resetting: 
      println("BLE NOT SUPPORTED") 
     default: 
      println("Error") 
     } 
    } 
} 

ответ

1

Это сообщение об ошибке вводит в заблуждение. Вы не можете ссылаться на self в исходное назначение переменной экземпляра. Когда переменные экземпляра являются экземплярами self, не обязательно содержат что-либо значимое, поэтому Swift не позволяет использовать self.

Вы могли бы использовать ленивую переменную:

lazy var myPeripheralManager: CBPeripheralManager = { 
    return CBPeripheralManager(delegate:self, queue: nil) 
}() 

Этот блок будет вызываться при первом доступе myPeripheralManager, и он будет создавать объект для вас.

+0

Спасибо, Маттиас, теперь он отлично работает ...! –

Смежные вопросы