Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:在SwiftUI列表中显示IBeacon信息时出现错误“;类型为'的值;NSObject';“没有成员”;_Ios_Swift_Swiftui_Ibeacon - Fatal编程技术网

iOS:在SwiftUI列表中显示IBeacon信息时出现错误“;类型为'的值;NSObject';“没有成员”;

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()

我试图在SwiftUI中创建一个列表,显示来自附近信标的信息,但没有进一步的成功

我可以将CLBeacon阵列信息打印到控制台,但当我尝试在列表中打印它时,它不起作用

这是我用来开始测距和监控的完整课程

类检测器: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。但无论如何,这是一个很好的捕获!