什么会导致Xcode MacOs应用程序将主包指向" /Applications/Xcode.app"?

时间:2017-02-01 09:05:22

标签: swift xcode macos

我正在努力编写我的第一个Swift3应用程序 - 一个屏幕保护程序,因为我无法引用任何本地文件。经过几个小时的调试和设置Playground后,我发现Bundle.main.bundlePath没有指向我的应用程序,而是" /Applications/Xcode.app"。这解释了为什么在下面的代码中 - 从未找到video.mp4,但我也没有从选择Bundle by identifier中找回。

有关如何解决此问题的任何建议?我的一个本地文件(video.mp4)是可读的,被复制为Bundle Resource并且没有虚假的xattrs。我卡住了!任何帮助表示赞赏。

运行10.12.3 / Xcode 8.2.1,Swift 3.0.2

下面的游乐场代码:

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 个答案:

答案 0 :(得分:1)

根据Eric的评论,这是Playground的正确行为。

对于其他n00bs,在工作区内创建一个新的Playground会导致灰色的Sources和Resources文件夹,如果你试图在finder中显示没有任何反应(因为它们不存在)。从新的Playground中访问本地文件

  • 创建Resources子文件夹
  • 将资产复制到资源
  • 确保Copy Bundle Resources包含目标的资产

似乎无法从Playground中访问其他捆绑包。