繁体   English   中英

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

[英]NSSharingService: How to compare with the constants?

当用户分享给我时我想做点什么

- (void)sharingService:(NSSharingService *)sharingService didShareItems:(NSArray *)items
{
    BOOL isSafariReadingList = [sharingService.description rangeOfString:NSSharingServiceNameAddToSafariReadingList].location != NSNotFound;
}

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

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

@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

那么您可以通过以下方式使用它:

    [[sharingService activityType] isEqualToString:NSSharingServiceNameAddToSafariReadingList];

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

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

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

有关更多信息,请查看https://github.com/stuffmc/SharingPicker

另外,作为参考,这里有一些NSSharingServiceName*常量的值,都以com.apple.share.

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

这个检查的等效项在我的 Swift 代码中起作用:

sharingService == NSSharingService(named: NSSharingServiceNameAddToSafariReadingList)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM