2015-09-06 4 views
-1

Я создаю приложение только для меня. Nad создайте его с помощью MVC.Сообщение о статусе вывода о Bluetooth в ViewController.swift

И у меня есть этот мир кода в моей модели «BTData.swift»:

func centralManagerDidUpdateState(central: CBCentralManager!) { 
    switch (central.state) 
    { 
    case .Unsupported: 
     println("BLE не поддерживается") 
     break 
    case .Unauthorized: 
     println("Приложение не авторизовано для использования BLE") 
     break 
    case .Unknown: 
     println("Состояние Central Manager не известно") 
     break 
    case .Resetting: 
     println("Соединение с системным сервисом потеряно") 
     break 
    case .PoweredOff: 
     println("BLE выключено") 
     break 
    case .PoweredOn: 
     startScanning() 
    default: 
     break 
    } 
} 

func startScanning() { 
    println("Scanning...") 
    if let central = centralManager { 
     central.scanForPeripheralsWithServices(nil, options: nil) 
    } 
} 

Все хорошо работает в отладке. Я видел там эти сообщения. Но я не могу понять, как выводить сообщение состояния состояния в метке.

+0

Из вашего вопроса, ваша проблема не ясна; однако из вашего комментария по удаленному ответу это более понятно. Вы должны добавить этот комментарий к своему вопросу, чтобы более четко объяснить свою проблему. Вам нужно посмотреть либо протокол/делегат (если только один объект за раз должен получить информацию), либо используя NSNotifications (если вы хотите уведомить произвольное число) – Paulw11

+0

Спасибо за ваш ответ! Я обновляю свой вопрос. –

ответ

0

Имею отношение к NSNotification. Вот код модели:

func sendBTServiceNotification(BTStatus: String) { 
    var connectionDetails = ["Статус": BTStatus] 
    NSNotificationCenter.defaultCenter().postNotificationName(BLEServiceStatusNotification, object: self, userInfo: connectionDetails) 
} 

// Получаем состояние при обновлении Central Manager (обязательная) 
func centralManagerDidUpdateState(central: CBCentralManager!) { 
    switch (central.state) 
    { 
    case .Unsupported: 
     sendBTServiceNotification("BLE не поддерживается") 
     break 
    case .Unauthorized: 
     sendBTServiceNotification("Приложение не авторизовано для использования BLE") 
     break 
    case .Unknown: 
     sendBTServiceNotification("Состояние Central Manager не известно") 
     break 
    case .Resetting: 
     sendBTServiceNotification("Соединение с системным сервисом потеряно") 
     break 
    case .PoweredOff: 
     sendBTServiceNotification("BLE выключено") 
     break 
    case .PoweredOn: 
     startScanning() 
    default: 
     break 
    } 
} 

func startScanning() { 
    sendBTServiceNotification("Сканирование...") 
    if let central = centralManager { 
     central.scanForPeripheralsWithServices(nil, options: nil) 
    } 
} 

И этот код ViewController:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    btData = BTData() 

    // Читаем статус BLE 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("statusChanged:"), name: btData.BLEServiceStatusNotification, object: nil) 

} 

deinit { 
    NSNotificationCenter.defaultCenter().removeObserver(self, name: btData.BLEServiceStatusNotification, object: nil) 
} 

// Обновляем статус BLE 
func statusChanged(notification: NSNotification) { 
    let userInfo = notification.userInfo as! [String: String] 
    let statusMsg: String! = userInfo["Статус"] 
    Status.text = "Статус: \(statusMsg)" 
} 
Смежные вопросы