【发布时间】:2016-09-29 15:18:03
【问题描述】:
这是我在 Xcode 7.3.1 中使用的代码,运行良好:
var selectedFiles = NSMutableArray(capacity:1)
let finder: AnyObject! = SBApplication(bundleIdentifier:"com.apple.finder")
let finderObject = finder.selection as! SBObject
let selection: AnyObject! = finderObject.get()
let items = selection.arrayByApplyingSelector(Selector("URL"))
let filteredfiles = (items as NSArray).pathsMatchingExtensions(["ai","pdf","ap","paf","pafsc"])
for item in filteredfiles {
let url = NSURL(string:item ,relativeToURL:nil)
selectedFiles.addObject(url!)
}
这是针对 Xcode 8.0 更正的代码,但不起作用: 最后一行产生错误
error = 不能调用非函数类型'[Any]!'的值
var selectedFiles = NSMutableArray(capacity:1)
let finder: AnyObject! = SBApplication(bundleIdentifier:"com.apple.finder")
let finderObject = finder.selection as! SBObject
if let selection = finderObject.get() as AnyObject?{
let items = selection.array(#selector(getter: NSTextCheckingResult.url))
let filteredfiles = (items as NSArray).pathsMatchingExtensions(["ai","pdf","ap","paf","pafsc"])
for item in filteredfiles {
let url = NSURL(string:item ,relativeToURL:nil)
selectedFiles.addObject(url!)
}
}
我尝试了很多解决方案,但不幸的是找不到线索。 我猜这是因为 Swift 3.0x API 发生了巨大的变化...... 欢迎任何帮助!
【问题讨论】:
标签: swift3 xcode8 finder scripting-bridge macos-sierra