【发布时间】:2021-03-23 09:04:25
【问题描述】:
我们的代码库在很大程度上仍然是一个混合代码库,但我一直在尝试在 Swift 中做更多的工作。不幸的是,我遇到了一个奇怪的情况,在 Obj-C 中运行良好的命令绝对拒绝在 Swift 中运行。
我正在尝试将文件从我们的一款桌面产品发送到我们的另一款产品。所有 URL 方案均已正确设置。 Obj-C 中的这个命令完美运行:
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"ourotherapp://v1/import?filePath=/Users/gi.joe/Documents/test.wav"]];
但是,在尝试使用 Swift 版本时,这个绝对拒绝执行。没有例外,没有线索,没有什么:
NSWorkspace.shared.open(URL(fileURLWithPath: "ourotherapp://v1/import?filePath=/Users/gi.joe/Documents/test.wav"))
NSWorkspace 在 Swift 中的工作方式与在 Obj-C 中的工作方式有什么不同吗?我查看了 Apple 文档,但可能遗漏了什么?
【问题讨论】:
-
我认为 ObjC 中的
URL(fileURLWithPath:)对应物是[NSURL fileURLWithPath:]而不是[NSURL URLWithString:],所以从技术上讲这两个调用是不等价的 -
哇。我看了很多次,我的眼睛都模糊了,我仍然没有注意到这一点。这就是问题所在!
标签: objective-c swift macos nsworkspace