iOS:在SwiftUI列表中显示IBeacon信息时出现错误“;类型为'的值;NSObject';“没有成员”;
我试图在SwiftUI中创建一个列表,显示来自附近信标的信息,但没有进一步的成功 我可以将CLBeacon阵列信息打印到控制台,但当我尝试在列表中打印它时,它不起作用 这是我用来开始测距和监控的完整课程iOS:在SwiftUI列表中显示IBeacon信息时出现错误“;类型为'的值;NSObject';“没有成员”;,ios,swift,swiftui,ibeacon,Ios,Swift,Swiftui,Ibeacon,我试图在SwiftUI中创建一个列表,显示来自附近信标的信息,但没有进一步的成功 我可以将CLBeacon阵列信息打印到控制台,但当我尝试在列表中打印它时,它不起作用 这是我用来开始测距和监控的完整课程 类检测器:NSObject、observeObject、CLLocationManagerDelegate{ var locationManager:CLLocationManager? @已发布的变量beaconData=[CLBeacon]() 重写init(){ super.init()
类检测器:NSObject、observeObject、CLLocationManagerDelegate{
var locationManager:CLLocationManager?
@已发布的变量beaconData=[CLBeacon]()
重写init(){
super.init()
locationManager=CLLocationManager()
locationManager?.delegate=self
locationManager?.RequestWhenUseAuthorization()
}
func locationManager(\ manager:CLLocationManager,didChangeAuthorization状态:CLAuthorizationStatus){
如果状态==.authorizedWhenInUse{
如果CLLocationManager.isMonitoringAvailable(适用于:CLBeaconRegion.self){
如果CLLocationManager.isRangingAvailable()可用{
开始扫描()
}
}
}
}
func locationManager(manager:CLLocationManager,didRangeBeacons信标:[CLBeacon],区域内:CLBeaconRegion){
信标数据=信标
}
func startScanning(){
让uuid=uuid(UUIString:)!
let constraint=CLBeaconIdentityConstraint(uuid:uuid)
让beaconRegion=CLBeaconRegion(beaconIdentityConstraint:constraint,标识符:“beacon”)
locationManager?.startMonitoring(适用于:信标区域)
locationManager?.startRangingBeacons(满足:约束)
}
}
我将信标数据存储到CLBeacon阵列beaconData
。我将在视图中使用此数组中的数据
现在让我困惑的部分,很多
在我看来,如果将beaconData
打印到控制台,它就会工作。整个对象或只是一个属性起作用。
但是如果我想在应用程序中以列表的形式打印它,它就不起作用了。例如,在UUID中,我得到类型为“NSObject”的错误值没有成员“UUID”
结构位置概述:视图{
@StateObject变量检测器=检测器()
var body:一些观点{
//这很有效
探测器.信标数据.forEach{信标在
打印(beacon.uuid)
}
//这行不通
返回列表(detector.beaconData,id:\.self){beacon中的信标
文本(beacon.uuid)
}
}
}
有人知道为什么这样不行吗?我错过了什么?
是否读取到CLBeacon具有NSObject内部属性的内容?
文本
获取一个字符串
,您正试图向其发送一个UUID
。这将导致另一个编译错误,但我怀疑这仍然可以解决它
另外,您可能希望对列表id
参数使用.uuid
:
struct PositionOverview: View {
@StateObject var detector = Detector()
var body: some View {
List(detector.beaconData, id: \.uuid) { beacon in
Text(beacon.uuid.uuidString)
}
}
}
先生,你真是个天才!真是个容易犯的错误。。非常感谢你!多年来,我们一直在为此奋斗。根据UUID作为id。部分正确。所有的信标都有相同的ID。但无论如何,这是一个很好的捕获!