处理NSPerformService错误
问题描述:
我用下面的代码来发送通过Twitter.app鸣叫:处理NSPerformService错误
NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]);
我如何处理下面的错误,显示自定义消息,如果用户不有twitter.app?
我试过尝试抓住,但它不工作。 谢谢
答
您尝试获取[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:]
来检查应用程序是否存在,以查看系统上是否存在具有已知程序包标识的应用程序。
你能举个例子吗? –
完成。查看更新的答案。 –
Eee ...不是一个愉快的方式来做到这一点。本地化是菜单项标题的一个因素,但不适用于服务名称。 –