因爲它似乎沒有回答這個(申請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….
的唯一方法。
欲瞭解更多信息,請查閱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
更不用說這是超級風險 - 「說明」可以在任何操作系統的更新變化:( –