2017-02-01 2 views
0

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) 
} 
+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

Antwort

1

Per Erics Kommentar, dann ist dies das richtige Verhalten für einen Spielplatz.

Für andere n00bs führt das Erstellen eines neuen Playgrounds in Ihrem Arbeitsbereich zu ausgegrauten Quellen- und Ressourcenordnern, die, wenn Sie versuchen, im Finder anzuzeigen, nichts passieren (weil sie nicht existieren). Für den Zugriff auf lokale Dateien in einem neuen Spielplatz

  • erstellen die Ressourcen Unterordner
  • das Asset kopieren
  • sicher Copy Bundle von Ressourcen zu Ressourcen machen enthält dieses Kapital für das Ziel

Es erscheint Es ist nicht möglich, von einem Playground aus auf andere Bundles zuzugreifen.

Verwandte Themen