0

我正在使用以下代码通过 Twitter.app 发送推文:

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

如果用户没有 twitter.app,我该如何处理以下错误以显示自定义消息?
错误

我试过try catch,但它不起作用。谢谢

4

1 回答 1

3

在调用它之前,您尝试获取[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 的应用程序。

于 2012-04-29T18:25:22.070 回答