2015-03-14 3 views
1

Я пытаюсь получить NSDictionary из NSData характеристики bluetooth, но я получил сообщение об ошибке «NSKeyedUnarchiver initForReadingWithData:]: непонятный архив».Как получить NSDictionary из NSData из характеристики Bluetooth в Swift

периферийный диспетчер отправляет NSDictionary, как это, в Центральный.

func peripheralManager(peripheral: CBPeripheralManager!, didReceiveReadRequest request: CBATTRequest!) { 
    var responseDictonary: Dictionary = [ 
     "id" : 11111, 
     "name" : "hoge" 
    ] 
    request.value = NSKeyedArchiver.archivedDataWithRootObject(responseDictonary) 
    peripheralManager.respondToRequest(request, withResult: CBATTError.Success) 
} 

Центральный диспетчер получает такое периферийное устройство.

func peripheral(peripheral: CBPeripheral!, didUpdateValueForCharacteristic characteristic: CBCharacteristic!, error: NSError!) { 
    if (error != nil) { 
     return 
    } 
    if characteristic.UUID == BLECharacteristicUUID { 
     let data : NSData = characteristic.value 
     if let recieveDictonary = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? NSDictionary { 
      var id = recieveDictonary["id"] as Int 
      var name = recieveDictonary["name"] as String 
      Tracker.sharedInstance.debug("\(id) \(name)") 
     } 
    } 
} 

У вас есть решения?

ответ

0

Попробуйте сделать следующее, это может помочь вам найти основную причину.

  1. Просто попробуйте разархивировать сразу после архивирования в первом способе, Это поможет вам найти, если есть какие-либо проблемы во время архивации себя. (ваш код архивирования отлично выглядит, убедитесь, что он работает правильно)

  2. проверьте значение nil для «данных» во втором методе.

+0

Я пробовал их обоих. В первом методе я мог бы правильно разблокировать, а данные второго метода - нет. Похоже, что что-то добавлено в данные из bluetooth ... Я не уверен, хотя. –

+0

О, может быть, просто исключите все другие возможности, попробуйте для словаря того же типа значения и разблокируйте его, т.е. - var responseDictonary: Dictionary = [ "id": "11111", "name": "hoge" ] –

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