2016-11-08 2 views
0

Я начинаю стремительно и стараюсь разработать простую программу, которая показывает характеристики BLE. Я подтвердил печати, что я захватил UUID целевых характеристикданные, потерянные в segue (xcode8.0)

myCharacteristicUUID_1 : (
    "Manufacturer Name String", 
    "Model Number String", 
    "Serial Number String", 
    "Hardware Revision String", 
    "Firmware Revision String", 
    "Software Revision String" 
) 

Однако в переопределении FUNC подготовки (для Segue: UIStoryboardSegue, отправитель: Любой?), я проверил его снова печать и я вижу, что данные ушли как показано ниже;

myCharacteristicUUID_2 : (
) 

я могу передать другие типы значений (e.g.string, текст и т.д ..), но я не могу справиться с данными, полученными от BLE. Может кто-нибудь указать, что я должен делать, когда я использую данные из BLE в segue? Ниже мой код;

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor targetService: CBService, error: Error?) { 

    if error != nil { 
     print("Characteristic NOT found : \(error)") 

    } 

    let foundCharacteristics = targetService.characteristics 

    for c in foundCharacteristics! as [CBCharacteristic] { 

     myCharacteristicUUID.add(c.uuid) 

    } 

    print("myCharacteristicUUID_1 : \(myCharacteristicUUID)") 

} 

// prepare for segue 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if (segue.identifier == "mySegue") { 

     print("myCharacteristicUUID_2 : \(myCharacteristicUUID)") 

     let mySecondViewController : SecondViewController = segue.destination as! SecondViewController 

     mySecondViewController.relayedFoundCharacteristicUUID = myCharacteristicUUID 

    } 

} 
+0

Что такое 'myCharacteristicUUID' тип? Посмотрите на меня, как не сохраняется, когда функция завершена. –

+0

Я устанавливаю myCharacteristicUUID как NSMutableArray. Я начал учиться быстро всего несколько недель назад и все еще борется ... – sandalwalk

+0

Можете ли вы показать, как вы объявляете «myCharacteristicUUID» в коде? –

ответ

0

Вот почему не был прочитан правильно. См. Место performSegue.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    selectedService = myService[indexPath.row] as! CBService 
    print("Selected_service : \(selectedService)") 

    self.peripheral.discoverCharacteristics(nil, for:selectedService as CBService!) 

    //performSegue(withIdentifier: "mySegue", sender: nil) 
    // I used to performed segue here. This was the reason myCharacterisitcUUID was empty. 


} 

// find the characteristics for the targetService 

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor targetService: CBService, error: Error?) { 

    if error != nil { 
     print("Characteristic NOT found : \(error)") 

    } 

    foundCharacteristics = targetService.characteristics! 

    for c in foundCharacteristics as [CBCharacteristic] { 

     self.myCharacteristicUUID.add(c.uuid) 

    } 
    // segue should be performed here ! This change worked! 
    performSegue(withIdentifier: "mySegue", sender: nil) 
} 
Смежные вопросы