处理NSPerformService错误

问题描述:

我用下面的代码来发送通过Twitter.app鸣叫:处理NSPerformService错误

NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]); 

我如何处理下面的错误,显示自定义消息,如果用户不有twitter.app?
Error

我试过尝试抓住,但它不工作。 谢谢

您尝试获取[NSApp servicesMenu]并在调用它之前查找该名称的服务是否存在。


更新与例如:

NSUInteger itemIndex = [[[NSApp servicesMenu] itemArray] indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop){ 
    return [[(NSMenuItem*)obj title] isEqualToString:@"Tweet"]; 
}]; 
if (itemIndex != NSNotFound) 
    NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]); 

更新2:

以上是对于一般情况,并与定位问题,并在服务菜单被更新。对于已知应用程序提供的服务的特定情况,您可以使用-[NSWorkspace absolutePathForAppBundleWithIdentifier:]来检查应用程序是否存在,以查看系统上是否存在具有已知程序包标识的应用程序。

+0

你能举个例子吗? –

+0

完成。查看更新的答案。 –

+1

Eee ...不是一个愉快的方式来做到这一点。本地化是菜单项标题的一个因素,但不适用于服务名称。 –