ich dieses Projekt von GitHub bin mit zum Spielen 360 Videos: https://github.com/Aralekk/simple360player_iOSWiedergabe von Video von URL basierend auf dem nächsten Bake
Und ich will von URL spezifisches Video spielen, basierend auf welchen Baken am nächsten liegt. Ich habe es diese Eigenschaften:
var minorOfClosestBeacon = Int()
var playVideo = String()
let urls = [
40018: "url1",
38474: "url2",
60220: "url3"
]
Und meine didRangeBeacons Funktion sieht wie folgt aus:
func beaconManager(manager: KTKBeaconManager, didRangeBeacons beacons: [CLBeacon], inRegion region: KTKBeaconRegion) {
print("Did ranged \"\(beacons.count)\" beacons inside region: \(region)")
if beacons.count == 0 {
userInfoView.hidden = false
}
if let closestBeacon = beacons.sort({ $0.0.accuracy < $0.1.accuracy }).first where closestBeacon.accuracy > 0 {
print("Closest Beacon is M: \(closestBeacon.major), m: \(closestBeacon.minor) ~ \(closestBeacon.accuracy) meters away.")
minorOfClosestBeacon = closestBeacon.minor.integerValue
let videoToPlay = self.urls[minorOfClosestBeacon]!
if playVideo != videoToPlay {
playVideo = videoToPlay
play(playVideo)
print("Playing video: \(playVideo)")
userInfoView.hidden = true
} else {
userInfoView.hidden = true
}
}
}
Wenn ich drucke es playvideo, druckt es mir richtigen Wert, ist aber nicht Video zu spielen. Wenn das erste Beacon das erste in urls-Array ist, wird es gerade nicht wiedergegeben, aber wenn es das zweite oder dritte Beacon ist, gibt es den richtigen Wert für die URL aus, aber nach diesem fatalen Fehler: unerwartet failed beim Entpacken eines optionalen Werts . Was soll da falsch sein?
Die einzige Anweisung nach dem Drucken der UTL ist diejenige, die 'userInfoView.hidden = true' setzt. Wo und wie ist 'userInfoView' definiert? Versuchen Sie, diese Zeilen zu kommentieren, um zu sehen, ob das den schwerwiegenden Fehler behebt. –
Welche Werte erhalten Sie für 'minorOfClosestBeacon'? Versuchen Sie, die if-Bedingung "if playVideo! = VideoToPlay" zu entfernen, um zu sehen, ob das erste Video abgespielt wird. –