Swift 標準ライブラリ   >     OptionSet


プロトコル


OptionSet


ビットマスクへの数学的集合インタフェースを表す型。





概観


OptionSet プロトコルを使用して、個々のビットがセットのメンバーを表すビットマスク型を表します。カスタム型でこのプロトコルを採用すると、それらの型のメンバーシップ・テスト、共用体、および交差などのセット関連操作を実行できます。さらに、特定の基準を使用して実装した場合、このプロトコルの採用には余分な作業は必要としません。


オプションセットを作成するときは、型宣言で rawValue プロパティを含めて下さい。rawValue プロパティは、IntUInt8 などの BitwiseOperations プロトコルに準拠する型でなければなりません。次に、個々のプロパティの生の値に対して 2 の一意の累乗 (1、2、4、8、16 など) を使用してあなたのカスタムタイプの静的プロパティとして一意のオプションを作成し、各プロパティを、型の生の値の 1 ビットにより表せます。


たとえば、ShippingOptions というカスタムタイプは、顧客が購入した物を出荷するためのオプションセットです。ShippingOptions には、使用可能な出荷オプションのビットマスクを格納する Int 型の rawValue プロパティを含みます。静的メンバー NextDay、SecondDay、Priority、 および Standard は、固有の個別オプションです。


リスト 1


struct ShippingOptions: OptionSet {
    let rawValue: Int

    static let nextDay    = ShippingOptions(rawValue: 1 << 0)
    static let secondDay  = ShippingOptions(rawValue: 1 << 1)
    static let priority   = ShippingOptions(rawValue: 1 << 2)
    static let standard   = ShippingOptions(rawValue: 1 << 3)

    static let express: ShippingOptions = [.nextDay, .secondDay]
    static let all: ShippingOptions = [.express, .priority, .standard]
}


その他のオプション値を含む配列リテラルで初期化された静的プロパティとして、あらかじめ構成された追加のオプションセット値を宣言します。この例では、express 静的プロパティに nextDay および secondDay オプションを使用して配列リテラルが割り当てられているため、これらの 2 つの要素が含まれます。


オプションセット型を使用する


オプションセットのインスタンスを作成する必要がある場合は、その型の静的メンバーの 1 つを変数または定数に割り当てます。あるいは、複数のメンバーを持つオプションセットインスタンスを作成するには、オプションセットの複数の静的メンバーを持つ配列リテラルを割り当てます。空のインスタンスを作成するには、変数に空の配列リテラルを割り当てます。


リスト 2


let singleOption: ShippingOptions = .priority
let multipleOptions: ShippingOptions = [.nextDay, .secondDay, .priority]
let noOptions: ShippingOptions = []


セット関連の操作を使用してメンバーシップをチェックし、カスタムオプションセット型のインスタンスからメンバーを追加または削除します。以下の例は、顧客の購入価格に基づいて無料の配送オプションを決定する方法を示しています。


リスト 3


let purchasePrice = 87.55

var freeOptions: ShippingOptions = []
if purchasePrice > 50 {
    freeOptions.insert(.priority)
}

if freeOptions.contains(.priority) {
    print("You've earned free priority shipping!")
} else {
    print("Add more to your cart for free priority shipping!")
}
// Prints "You've earned free priority shipping!"


プロトコル要件




イニシャライザ


デフォルトの実装




関連した型





イニシャライザ





インスタンスメソッド


関連




以下より継承





以下により採用


  • AlignmentOptions
  • AU3DMixerRenderingFlags
  • AudioBytePacketTranslationFlags
  • AudioChannelBitmap
  • AudioChannelFlags
  • AudioComponentFlags
  • AudioComponentInstantiationOptions
  • AudioFileFlags
  • AudioFileRegionFlags
  • AudioFileStreamParseFlags
  • AudioFileStreamPropertyFlags
  • AudioFileStreamSeekFlags
  • AudioQueueProcessingTapFlags
  • AudioSettingsFlags
  • AudioTimeStampFlags
  • AudioUnitParameterOptions
  • AudioUnitRenderActionFlags
  • AUGenericViewDisplayFlags
  • AUHostTransportStateFlags
  • AUParameterMIDIMappingFlags
  • AUScheduledAudioSliceFlags
  • AUSpatialMixerRenderingFlags
  • AuthorizationFlags
  • AVAssetReferenceRestrictions
  • AVAudioPlayerNodeBufferOptions
  • AVAudioSessionCategoryOptions
  • AVAudioSessionInterruptionOptions
  • AVAudioSessionRecordPermission
  • AVAudioSessionSetActiveOptions
  • AVMovieWritingOptions
  • AVMusicSequenceLoadOptions
  • AXCopyMultipleAttributeOptions
  • AXMenuItemModifiers
  • ByteCountFormatter.Units
  • CAAutoresizingMask
  • CAEdgeAntialiasingMask
  • CAFFormatFlags
  • CAFRegionFlags
  • CBAttributePermissions
  • CBCharacteristicProperties
  • CFCalendarUnit
  • CFDataSearchFlags
  • CFFileSecurityClearOptions
  • CFGregorianUnitFlags
  • CFISO8601DateFormatOptions
  • CFNetServiceBrowserFlags
  • CFNetServiceRegisterFlags
  • CFNumberFormatterOptionFlags
  • CFPropertyListMutabilityOptions
  • CFRunLoopActivity
  • CFSocketCallBackType
  • CFStreamEventType
  • CFStringCompareFlags
  • CFStringTokenizerTokenType
  • CFURLBookmarkCreationOptions
  • CFURLBookmarkResolutionOptions
  • CFURLEnumeratorOptions
  • CFXMLParserOptions
  • CFXMLParserStatusCode
  • CGBitmapInfo
  • CGCaptureOptions
  • CGConfigureOption
  • CGDisplayChangeSummaryFlags
  • CGEventFilterMask
  • CGEventFlags
  • CGGradientDrawingOptions
  • CGScreenUpdateOperation
  • CGWindowImageOption
  • CGWindowListOption
  • CKApplicationPermissions
  • CKQuerySubscriptionOptions
  • CKRecordZoneCapabilities
  • CKSubscriptionOptions
  • CLKComplicationTimeTravelDirections
  • CMAttitudeReferenceFrame
  • CMSSignedAttributes
  • CMTimeFlags
  • CTFontCollectionCopyOptions
  • CTFontOptions
  • CTFontStylisticClass
  • CTFontSymbolicTraits
  • CTFontTableOptions
  • CTLineBoundsOptions
  • CTRunStatus
  • CTUnderlineStyle
  • CTUnderlineStyleModifiers
  • CVPixelBufferLockFlags
  • CVPixelBufferPoolFlushFlags
  • CVSMPTETimeFlags
  • CVTimeFlags
  • CVTimeStampFlags
  • CWCipherKeyFlags
  • DateComponentsFormatter.
         ZeroFormattingBehavior
  • DispatchIO.CloseFlags
  • DispatchIO.IntervalFlags
  • DispatchQueue.Attributes
  • DispatchSource.FileSystemEvent
  • DispatchSource.MachSendEvent
  • DispatchSource.MemoryPressureEvent
  • DispatchSource.ProcessEvent
  • DispatchSource.TimerFlags
  • DispatchWorkItemFlags
  • DistributedNotificationCenter.Options
  • EAWiFiUnconfiguredAccessoryProperties
  • EKCalendarEventAvailabilityMask
  • EKEntityMask
  • FileManager.DirectoryEnumerationOptions
  • FileManager.ItemReplacementOptions
  • FileManager.SearchPathDomainMask
  • FileManager.UnmountOptions
  • FileManager.VolumeEnumerationOptions
  • FileWrapper.ReadingOptions
  • FileWrapper.WritingOptions
  • GKMeshGraphTriangulationMode
  • HKQueryOptions
  • HKStatisticsOptions
  • INCallCapabilityOptions
  • INCarSignalOptions
  • INMessageAttributeOptions
  • INPhotoAttributeOptions
  • interface_event_t
  • IOSurfaceLockOptions
  • ISO8601DateFormatter.Options
  • JSONSerialization.ReadingOptions
  • JSONSerialization.WritingOptions
  • LSAcceptanceFlags
  • LSHandlerOptions
  • LSItemInfoFlags
  • LSLaunchFlags
  • LSRequestedInfo
  • LSRolesMask
  • MeasurementFormatter.UnitOptions
  • MKDirectionsTransportType
  • MLMediaSourceType
  • MPMediaPlaylistAttribute
  • MPMediaType
  • MPMovieLoadState
  • MPMovieMediaTypeMask
  • MPSKernelOptions
  • MTLBlitOption
  • MTLColorWriteMask
  • MTLPipelineOption
  • MTLRenderStages
  • MTLResourceOptions
  • MTLTextureUsage
  • MusicSequenceFileFlags
  • MusicSequenceLoadFlags
  • NetService.Options
  • NotificationQueue.NotificationCoalescing
  • NSAppleEventDescriptor.SendOptions
  • NSApplicationActivationOptions
  • NSApplicationOcclusionState
  • NSApplicationPresentationOptions


  • NSAttributedString.EnumerationOptions
  • NSAutoresizingMaskOptions
  • NSBinarySearchingOptions
  • NSBitmapFormat
  • NSCalendar.Options
  • NSCalendar.Unit
  • NSCellHitResult
  • NSCellStyleMask
  • NSCloudKitSharingServiceOptions
  • NSCollectionViewScrollPosition
  • NSColorPanelOptions
  • NSComparisonPredicate.Options
  • NSData.Base64DecodingOptions
  • NSData.Base64EncodingOptions
  • NSData.ReadingOptions
  • NSData.SearchOptions
  • NSData.WritingOptions
  • NSDatePickerElementFlags
  • NSDraggingItemEnumerationOptions
  • NSDragOperation
  • NSEnumerationOptions
  • NSEventButtonMask
  • NSEventMask
  • NSEventModifierFlags
  • NSEventPhase
  • NSEventSwipeTrackingOptions
  • NSFetchRequestResultType
  • NSFileCoordinator.ReadingOptions
  • NSFileCoordinator.WritingOptions
  • NSFileVersion.AddingOptions
  • NSFileVersion.ReplacingOptions
  • NSFontCollectionOptions
  • NSFontCollectionVisibility
  • NSFontTraitMask
  • NSGradientDrawingOptions
  • NSKeyValueObservingOptions
  • NSLayoutFormatOptions
  • NSLinguisticTagger.Options
  • NSMachPort.Options
  • NSMediaLibrary
  • NSMenuProperties
  • NSPasteboardContentsOptions
  • NSPasteboardReadingOptions
  • NSPasteboardWritingOptions
  • NSPDFPanelOptions
  • NSPointerFunctions.Options
  • NSPrintPanelOptions
  • NSRegularExpression.MatchingFlags
  • NSRegularExpression.MatchingOptions
  • NSRegularExpression.Options
  • NSRemoteNotificationType
  • NSSnapshotEventType
  • NSSortOptions
  • NSSpringLoadingOptions
  • NSStatusItemBehavior
  • NSString.CompareOptions
  • NSString.EncodingConversionOptions
  • NSString.EnumerationOptions
  • NSStringDrawingOptions
  • NSTableColumnResizingOptions
  • NSTableViewAnimationOptions
  • NSTableViewGridLineStyle
  • NSTextCheckingResult.CheckingType
  • NSTextListOptions
  • NSTextStorageEditActions
  • NSTouchPhase
  • NSTouchTypeMask
  • NSTrackingAreaOptions
  • NSTypesetterControlCharacterAction
  • NSURL.BookmarkCreationOptions
  • NSURL.BookmarkResolutionOptions
  • NSViewControllerTransitionOptions
  • NSWindowCollectionBehavior
  • NSWindowListOptions
  • NSWindowOcclusionState
  • NSWindowStyleMask
  • NSWorkspaceIconCreationOptions
  • NSWorkspaceLaunchOptions
  • NSXPCConnection.Options
  • PasteboardFlavorFlags
  • PasteboardSyncFlags
  • PersonNameComponentsFormatter.Options
  • PHAssetBurstSelectionType
  • PHAssetMediaSubtype
  • PHAssetSourceType
  • PHLivePhotoBadgeOptions
  • PKAddressField
  • PKMerchantCapability
  • ProcessInfo.ActivityOptions
  • PropertyListSerialization.MutabilityOptions
  • SCNBillboardAxis
  • SCNDebugOptions
  • SCNetworkReachabilityFlags
  • SCNPhysicsCollisionCategory
  • SCPreferencesNotification
  • SecAccessControlCreateFlags
  • SecCodeSignatureFlags
  • SecCodeStatus
  • SecCSFlags
  • SecItemImportExportFlags
  • SecKeychainEventMask
  • SecKeychainPromptSelector
  • SecKeyImportExportFlags
  • SecKeyUsage
  • SecPadding
  • SecTrustOptionFlags
  • SecTrustSettingsKeyUsage
  • SessionAttributeBits
  • SessionCreationFlags
  • SKCloudServiceCapability
  • SKTileAdjacencyMask
  • SMPTETimeFlags
  • Stream.Event
  • TKSmartCardProtocol
  • TKSmartCardUserInteractionFor
          PINOperation.Completion
  • TKSmartCardUserInteractionFor
          SecurePINChange.Confirmation
  • UIAccessibilityHearingDeviceEar
  • UICloudSharingPermissionOptions
  • UICollectionViewScrollPosition
  • UICollisionBehaviorMode
  • UIControlEvents
  • UIControlState
  • UIDataDetectorTypes
  • UIDocumentState
  • UIFocusHeading
  • UIFontDescriptorSymbolicTraits
  • UIInterfaceOrientationMask
  • UIKeyModifierFlags
  • UIPopoverArrowDirection
  • UIPrinterJobTypes
  • UIRectCorner
  • UIRectEdge
  • UIRemoteNotificationType
  • UISwipeGestureRecognizerDirection
  • UITableViewCellStateMask
  • UITouchProperties
  • UIUserNotificationType
  • UIViewAnimationOptions
  • UIViewAutoresizing
  • UIViewKeyframeAnimationOptions
  • UNAuthorizationOptions
  • UNNotificationActionOptions
  • UNNotificationCategoryOptions
  • UNNotificationPresentationOptions
  • VTCompressionSessionOptionFlags
  • VTDecodeFrameFlags
  • VTDecodeInfoFlags
  • VTEncodeInfoFlags
  • WebDragDestinationAction
  • WebDragSourceAction
  • WKAudiovisualMediaTypes
  • WKDataDetectorTypes
  • WKSwipeGestureRecognizerDirection
  • XCUIKeyModifierFlags
  • XMLNode.Options





  • 以下も見よ




    関連したシンボル





    目次
    Xcode の新機能

  • 言語:Swift
  • 概観
  • プロトコル要件
  • デフォルトの実装
  • 関連












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)