【发布时间】:2015-10-09 10:32:26
【问题描述】:
我在尝试宣传某些服务数据时遇到了一个奇怪的错误。
func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
if let beacon = beacons.first, username = NSUserDefaults.standardUserDefaults().objectForKey("username") {
var major = beacon.major.integerValue
var minor = beacon.minor.integerValue
let advertismentData:[String:AnyObject] = [
CBAdvertisementDataServiceUUIDsKey:[AppDelegate.MajorUUID, AppDelegate.MinorUUID, AppDelegate.IdentifierUUID],
CBAdvertisementDataServiceDataKey:[AppDelegate.MajorUUID: NSData(bytes: &major, length: sizeof(Int)), AppDelegate.MinorUUID: NSData(bytes: &minor, length: sizeof(Int)), AppDelegate.IdentifierUUID: username.dataUsingEncoding(NSUTF8StringEncoding)]
]
peripheralManger?.startAdvertising(advertismentData)
manager.stopRangingBeaconsInRegion(region)
}
}
当传递开始广告时出现以下错误:
2015-10-09 11:17:05.563 BeConvo[280:21134] -[CBUUID UTF8String]: 无法识别的选择器发送到实例 0x13dd5b420 2015-10-09 11:17:05.564 BeConvo[280:21134] * 由于未捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'-[CBUUID UTF8String]: 无法识别的选择器发送到实例 0x13dd5b420' * 第一次抛出调用栈:(0x185364f5c 0x199f5bf80 0x18536bc6c 0x185368c14 0x18526cdcc 0x184fe56b4 0x185361f00 0x184fe4634 0x184fe58a8 0x184fe56d8 0x185361f00 0x184fe4634 0x184fe44dc 0x184fe4704 0x184fe47e8 0x184fe6104 0x184fe7190 0x1000eb9a4 0x1000ebae0 0x185af5f04 0x185af0b14 0x185aeaef4 0x18531c48c 0x18531bdc4 0x18531a20c 0x185248dc0 0x19039c088 0x18a922f44 0x1000ec328 0x19a7868b8) libc++abi.dylib: 以未捕获的方式终止 NSException 类型的异常
如果我删除ServiceDataKey 或删除字典的内容,则广告成功。
func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
if let beacon = beacons.first, username = NSUserDefaults.standardUserDefaults().objectForKey("username") {
var major = beacon.major.integerValue
var minor = beacon.minor.integerValue
let advertismentData:[String:AnyObject] = [
CBAdvertisementDataServiceUUIDsKey:[AppDelegate.MajorUUID, AppDelegate.MinorUUID, AppDelegate.IdentifierUUID],
CBAdvertisementDataServiceDataKey:[]
]
peripheralManger?.startAdvertising(advertismentData)
manager.stopRangingBeaconsInRegion(region)
}
}
我已经尝试了每一个键/值对,看看它是否是特定的,但它们中的任何一个组合都会导致错误发生。
有人有什么想法吗?
感谢您的帮助。
【问题讨论】:
标签: ios bluetooth-lowenergy core-bluetooth ibeacon