Я пытаюсь добавить службу в контекстном меню Finder, используя этот класс:создать службу в контексте Finder
public class Service {
public func handleServices(pboard:NSPasteboard, userData:String, error:UnsafeMutableBufferPointer<String>) { // not sure about the correct parameters
if (pboard.types?.contains(NSFilenamesPboardType) != nil) {
let fileArray = pboard.propertyListForType(NSFilenamesPboardType)
print(fileArray)
}
}
init() {
NSApp.servicesProvider = self
NSUpdateDynamicServices()
}
}
Услуга объявлена в info.plist следующим образом:
<key>NSServices</key>
<array>
<dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Service Handling Demo</string>
</dict>
<key>NSMessage</key>
<string>handleServices</string>
<key>NSPortName</key>
<string>services</string>
<key>NSSendTypes</key>
<array>
<string>NSFilenamesPboardType</string>
</array>
</dict>
</array>
Наконец, я включил службу в Системные настройки/Клавиатура/Ярлыки. Поэтому я вижу службу и могу ее назвать. Но все, что я получаю при вызове, это
Cannot find service provider for selector handleServices:userData:error: or handleServices:: for service handleServices
My * guess * будет состоять в том, что класс должен наследовать от 'NSObject' (или помечен' @ objc'). –
@MartinR к сожалению нет. Я попробовал и то, и другое. –