Ich habe Mühe, meine erste Swift3-App zu schreiben - ein Bildschirmschoner, weil ich keine lokalen Dateien referenzieren kann. Nach stundenlangem Debuggen und Einrichten eines Playgrounds habe ich festgestellt, dass der Bundle.main.bundlePath nicht auf meine App, sondern auf "/Applications/Xcode.app" zeigt. Das erklärt, warum in dem folgenden Code - video.mp4 nie gefunden wird, aber ich bekomme nil zurück von der Auswahl des Bundles nach Bezeichner.Was würde dazu führen, dass die Xcode MacOs App das Hauptpaket auf "/Applications/Xcode.app" zeigt?
Irgendwelche Vorschläge, wie Sie das beheben können? Meine lokale Datei (video.mp4) ist lesbar, wird als Bundle-Ressource kopiert und enthält keine falschen Xatrs. Ich stecke fest! Jede Hilfe wird geschätzt.
Lauf 10.12.3/Xcode 8.2.1, 3.0.2 Swift
Spielplatz Code unten:
import Cocoa
import PlaygroundSupport
import AVKit
import AVFoundation
var frameRect = NSRect(x: 0, y: 0, width: 600, height: 600)
var mainView = NSView(frame: frameRect)
let bundle = Bundle(identifier: "com.modprods.koorigras-test.Playground")
debugPrint(bundle)
debugPrint(Bundle.main.bundlePath)
guard let path = Bundle.main.path(forResource: "video",ofType:"mp4") else {
debugPrint("not found")
exit(1)
}
'Bundle.main.bundlePath zeigt nicht auf meine App, sondern" /Applications/Xcode.app ". Dies liegt daran, dass Sie dies in einem Playground tun. Ein Spielplatz hat kein eigenes Bündel, es ist Teil von Xcode. Führen Sie diese Zeile in Ihrer echten App aus und Sie erhalten den tatsächlichen Paketpfad wie erwartet. – Moritz