无法使用Cocoa中的服务在Finder的上下文菜单中添加项目

Lau*_*llo 10 macos service cocoa finder contextmenu


每当我右键单击文件或文件夹时,我想在Finder的上下文菜单中添加一个项目,并且此菜单链接到我的Cocoa应用程序的方法.
我正在关注CocoaDev的示例和Apple的文档,但我无法显示该服务.
这是我的.h

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate,NSObject>

@property (assign) IBOutlet NSWindow *window;
-(void)IClicked:(NSPasteboard *)pboard 
             userData:(NSString *)data
                error:(NSString **)error;

@end
Run Code Online (Sandbox Code Playgroud)

.M

#import "AppDelegate.h"

@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [NSApp setServicesProvider:self];
}

- (void)IClicked:(NSPasteboard *)pboard userData:(NSString *)data error:(NSString **)error
{
    NSLog(@"I clicked");
}

@end
Run Code Online (Sandbox Code Playgroud)

和我的Application-plist.info的摘录:

<key>NSServices</key>
<array>
    <dict>
        <key>NSKeyEquivalent</key>
        <dict>
            <key>default</key>
            <string>E</string>
        </dict>
        <key>NSMenuItem</key>
        <dict>
            <key>default</key>
            <string>My Application</string>
        </dict>
        <key>NSMessage</key>
        <string>IClicked</string>
        <key>NSPortName</key>
        <string>TestService</string>
        <key>NSSendFileTypes</key>
        <array>
            <string>public.item</string>
        </array>
        <key>NSSendTypes</key>
        <array>
            <string>NSPasteboardTypeString</string>
        </array>
        <key>NSRequiredContext</key>
        <dict>
            <key>NSServiceCategory</key>
            <string>public.item</string>
        </dict>
        <key>NSReturnTypes</key>
        <array>
            <string>NSPasteboardTypeString</string>
        </array>
    </dict>
</array>
</dict>
Run Code Online (Sandbox Code Playgroud)

我将代码上传到http://www.petits-suisses.ch/TestService.zip.

我错了什么,或者我可以下载任何可用的Cocoa代码来理解我做错了什么?

谢谢 !

Lau*_*llo 7

发现问题:
1.我真的必须将我的应用程序至少存储到Applications文件夹中(在使用Xcode编译时默认情况下不会这样做)
2.应该添加NSUpdateDynamicServices(); [NSApp setServicesProvider:self]之后; 命令.
3.在启动应用程序后等待大约10秒钟,以便填充Finder的"服务"菜单.