根据Swift 2.0 文档,CLBeaconRegion
应该仍然可以将peripheralDataWithMeasuredPower:
方法startAdvertising:
的输出传递给CLPeripheralManager
.
获取信标广告数据
- peripheralDataWithMeasuredPower:
检索可用于将当前设备宣传为信标的数据。
宣言
迅速
func peripheralDataWithMeasuredPower(_measuredPower: NSNumber?) -> NSMutableDictionary
目标-C
- (NSMutableDictionary<NSString *,id> * _Nonnull)peripheralDataWithMeasuredPower:(NSNumber * _Nullable)measuredPower
参数
measuredPower
设备的接收信号强度指示器 (RSSI) 值(以分贝为单位)。该值表示从一米外测得的信标强度,并在测距期间使用。指定nil
使用设备的默认值。返回值
可以与 a 结合使用的数据字典,
CBPeripheralManager
以将当前设备宣传为信标。讨论
返回的字典对信标的识别信息以及广告信标所需的其他信息进行编码。您不需要直接访问字典内容。将字典传递给 a 的
startAdvertising:
方法CBPeripheralManager
以开始宣传信标。可用性
在 iOS 7.0 及更高版本中可用。
然而,peripheralDataWithMeasuredPower:
返回 an NSMutableDictionary
while 的startAdvertising:
方法CLPeripheralManager
接受一个 Swift 字典[String : AnyObject]?
,尽管文档声称它接受一个NSDictionary
. 以下代码在 Swift 1.0 中有效:
// Set up a beacon region with the UUID, Major and Minor values
let region = CLBeaconRegion(proximityUUID:beaconUUID!, major:withMajor.unsignedShortValue, minor:withMinor.unsignedShortValue, identifier:"com.example.beacon")
// Attempt to set up a peripheral with the measured power
let peripheralData = region.peripheralDataWithMeasuredPower(withPower)
_peripheralManager!.startAdvertising(peripheralData)
在 Swift 2.0 中,相同的代码编译失败并出现警告: 编译失败,出现警告:
NSDictionary
不能转换为[String : AnyObject]
; 你的意思是as!
用来强迫沮丧吗?
但是,强制向下转换总是失败。
这是文档错误,Swift 2.0 中的错误,还是我遗漏了什么?