首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSharingService:如何与常量进行比较?

NSSharingService:如何与常量进行比较?
EN

Stack Overflow用户
提问于 2014-02-15 19:50:54
回答 2查看 755关注 0票数 2

当用户共享到时,我想做一些事情

代码语言:javascript
复制
- (void)sharingService:(NSSharingService *)sharingService didShareItems:(NSArray *)items
{
    BOOL isSafariReadingList = [sharingService.description rangeOfString:NSSharingServiceNameAddToSafariReadingList].location != NSNotFound;
}

我在NSSharingService上找不到任何可以与常量进行比较的属性。我是不是遗漏了什么?!

EN

回答 2

Stack Overflow用户

发布于 2014-02-20 18:26:30

由于它似乎没有答案(归档http://openradar.appspot.com/16114564),我创建了一个类别

代码语言:javascript
复制
@implementation NSSharingService (ActivityType)

- (NSString*)activityType {
    NSRange range = [self.description rangeOfString:@"\\[com.apple.share.*\\]" options:NSRegularExpressionSearch];
    range.location++; // Start after [
    range.length -= 2; // Remove both [ and ]
    return [self.description substringWithRange:range];
}
@end

然后,您可以通过以下方式使用它:

代码语言:javascript
复制
    [[sharingService activityType] isEqualToString:NSSharingServiceNameAddToSafariReadingList];

    [@[NSSharingServiceNameAddToSafariReadingList, NSSharingServiceNameAddToIPhoto]
         containsObject:[sharingService activityType]];

我猜苹果只是认为我们不会想知道人们从Picker中选择了哪种服务。

解析“com.apple.share.System”显然很危险,但这是我避免一组rangeOfString || rangeOfString || rangeOfString….的唯一方法。

有关更多信息,请查看

此外,作为参考,下面是那些以com.apple.share.开头的NSSharingServiceName*常量的一些值

代码语言:javascript
复制
PostOnFacebook                  Facebook.post
PostOnTwitter                   Twitter.post
PostOnSinaWeibo                 SinaWeibo.post
PostOnTencentWeibo              TencentWeibo.post
PostOnLinkedIn                  LinkedIn.post
ComposeEmail                    Mail.compose
ComposeMessage                  Messages.compose
SendViaAirDrop                  AirDrop.send
UseAsTwitterProfileImage        Twitter.set-profile-image
UseAsFacebookProfileImage       Facebook.set-profile-image
UseAsLinkedInProfileImage       LinkedIn.set-profile-image
PostImageOnFlickr               Video.upload-image-Flickr
AddToSafariReadingList          System.add-to-safari-reading-list
AddToIPhoto                     System.add-to-iphoto
票数 2
EN

Stack Overflow用户

发布于 2015-10-09 21:51:52

此检查的等价物在我的Swift代码中有效:

代码语言:javascript
复制
sharingService == NSSharingService(named: NSSharingServiceNameAddToSafariReadingList)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21797141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档