我正在使用以下代码通过 Twitter.app 发送推文:
NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]);
如果用户没有 twitter.app,我该如何处理以下错误以显示自定义消息?
我试过try catch,但它不起作用。谢谢
我正在使用以下代码通过 Twitter.app 发送推文:
NSPerformService(@"Tweet", [NSPasteboard generalPasteboard]);
如果用户没有 twitter.app,我该如何处理以下错误以显示自定义消息?
我试过try catch,但它不起作用。谢谢
在调用它之前,您尝试获取[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:]
以查看系统上是否存在具有已知捆绑 ID 的应用程序。