My problem is finding a correct (App Store approval) method to enable drag and drop to the App Icon.
I thought this was answered earlier. Implement this in your app delegate
// MARK: Open File (UTI support)
/// process files give to us via "Open With..."
///
/// - parameter sender: unused
/// - parameter fileName: path of file to process
/// - returns: true if the file was opened
///
/// If multiple files are specified the function appears to be called once per file.
func application(_ sender: NSApplication,
openFile filename: String) -> Bool {
let url = URL(fileURLWithPath: filename)
/// do something with URL Return true if OK
return false
}
I think that is all that is necessary.
And with that, a caveat. My “do something” code happens to eventually contain this:
updateGroup.enter()
DispatchQueue.global(qos: .userInitiated).async {
// some code
DispatchQueue.main.async {
// more code
updateGroup.leave()
}
}
When I drag a file onto the app icon my app dies with
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't posix_spawn: error 1'
abort() called
terminating with uncaught exception of type NSException
I don’t think it did that before I added the DispatchQueue. I just discovered this. Something else to debug.
Marc