NSDKFeatureStatus
Declaration
struct NSDKFeatureStatusSummary
Status flags for NSDK features indicating their current operational state.
NSDKFeatureStatus is an option set that represents various status conditions
for NSDK features like VPS2, scanning, and mapping. Multiple status flags
can be active simultaneously to provide detailed status information.
Overview
Use this to monitor the health and state of NSDK features:
- Check for errors that need attention
- Verify the feature was configured successfully
- Ensure features are ready for operation
Example Usage
let status = vps2Session.featureStatus()
if status.contains(.configurationFailed) {
print("Feature configuration failed")
} else if status.isOk() {
print("Feature is ready and operational")
}
To find out why a network request failed, including an authentication problem, read the
localization request records instead. Each record names its request type and error, so a
failure can be told apart from one belonging to a different request — see
NSDKVps2Session/getLatestLocalizationRequestRecords().
Constructors
Constructor
Summary
Overload 1
Summary
Creates a set containing the elements of the given array literal.
Do not call this initializer directly. It is used by the compiler when
you use an array literal. Instead, create a new set using an array
literal as its value by enclosing a comma-separated list of values in
square brackets. You can use an array literal anywhere a set is expected
by the type context.
Here, a set of strings is created from an array literal holding only
strings:
let ingredients: Set = ["cocoa beans", "sugar", "cocoa butter", "salt"]
if ingredients.isSuperset(of: ["sugar", "salt"]) {
print("Whatever it is, it's bound to be delicious!")
}
// Prints "Whatever it is, it's bound to be delicious!"
Overload 2
Summary
Creates a feature status from a C API status value.
Overload 3
Summary
Creates a feature status with the specified raw value.
Overload 4
Summary
Creates a new set from a finite sequence of items.
Use this initializer to create a new set from an existing sequence, like
an array or a range:
let validIndices = Set(0..<7).subtracting([2, 4, 5])
print(validIndices)
// Prints "[6, 0, 1, 3]"
Properties
| Name | Type | Summary |
|---|---|---|
| static let badAuth | NSDKFeatureStatus | Invalid or expired authentication credentials. VPS localization and the portal are authorized separately, so a token can be entitled to one and not the other. A single flag cannot say which one rejected the app. While this flag remains, it reports VPS localization failures only. |
| static let configurationFailed | NSDKFeatureStatus | Feature configuration failed. This indicates that the feature could not be configured with the provided settings. Check configuration parameters and try reconfiguring the feature. |
| var debugDescription | String | A textual representation of this instance, suitable for debugging. Calling this property directly is discouraged. Instead, convert an instance of any type to a string by using the String(reflecting:)initializer. This initializer works with any type, and uses the custom debugDescription property for types that conform toCustomDebugStringConvertible:struct Point: CustomDebugStringConvertible { let x: Int, y: Int var debugDescription: String { return "(\(x), \(y))" } } let p = Point(x: 21, y: 30) let s = String(reflecting: p) print(s) // Prints "(21, 30)" The conversion of p to a string in the assignment to s uses thePoint type's debugDescription property. |
| var isEmpty | Bool | A Boolean value that indicates whether the set has no elements. |
| static let notused1 | NSDKFeatureStatus | Reserved status flag (not used in current implementation). |
| static let notused2 | NSDKFeatureStatus | Reserved status flag (not used in current implementation). |
| static let ok | NSDKFeatureStatus | Feature is operating normally with no issues. This represents the ideal state where the feature is ready and functional. |
| let rawValue | UInt32 | The raw value representing the status flags. |
Methods
| Name | Type | Summary |
|---|---|---|
| contains | Bool | Returns a Boolean value that indicates whether a given element is a member of the option set. This example uses the contains(_:) method to check whether next-dayshipping is in the availableOptions instance.let availableOptions = ShippingOptions.express if availableOptions.contains(.nextDay) { print("Next day shipping available") } // Prints "Next day shipping available" |
| mutating formIntersection | void | Removes all elements of this option set that are not also present in the given set. This method is implemented as a & (bitwise AND) operation on thetwo sets' raw values. |
| mutating formSymmetricDifference | void | Replaces this set with a new set containing all elements contained in either this set or the given set, but not in both. This method is implemented as a ^ (bitwise XOR) operation on the twosets' raw values. |
| mutating formUnion | void | Inserts the elements of another set into this option set. This method is implemented as a | (bitwise OR) operation on thetwo sets' raw values. |
| @discardableResult mutating insert | (inserted: Bool, memberAfterInsert: Self.Element) | Adds the given element to the option set if it is not already a member. In the following example, the .secondDay shipping option is added tothe freeOptions option set if purchasePrice is greater than 50.0. Forthe ShippingOptions declaration, see the OptionSet protocoldiscussion. let purchasePrice = 87.55 var freeOptions: ShippingOptions = [.standard, .priority] if purchasePrice > 50 { freeOptions.insert(.secondDay) } print(freeOptions.contains(.secondDay)) // Prints "true" |
| intersection | Self | Returns a new option set with only the elements contained in both this set and the given set. This example uses the intersection(_:) method to limit the availableshipping options to what can be used with a PO Box destination. // Can only ship standard or priority to PO Boxes let poboxShipping: ShippingOptions = [.standard, .priority] let memberShipping: ShippingOptions = [.standard, .priority, .secondDay] let availableOptions = memberShipping.intersection(poboxShipping) print(availableOptions.contains(.priority)) // Prints "true" print(availableOptions.contains(.secondDay)) // Prints "false" |
| isDisjoint | Bool | Returns a Boolean value that indicates whether the set has no members in common with the given set. In the following example, the employees set is disjoint with thevisitors set because no name appears in both sets.let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"] let visitors: Set = ["Marcia", "Nathaniel", "Olivia"] print(employees.isDisjoint(with: visitors)) // Prints "true" |
| isOk | Bool | - |
| isStrictSubset | Bool | Returns a Boolean value that indicates whether this set is a strict subset of the given set. Set A is a strict subset of another set B if every member of A is also a member of B and B contains at least one element that is not a member of A. let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"] let attendees: Set = ["Alicia", "Bethany", "Diana"] print(attendees.isStrictSubset(of: employees)) // Prints "true" // A set is never a strict subset of itself: print(attendees.isStrictSubset(of: attendees)) // Prints "false" |
| isStrictSuperset | Bool | Returns a Boolean value that indicates whether this set is a strict superset of the given set. Set A is a strict superset of another set B if every member of B is also a member of A and A contains at least one element that is not a member of B. let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"] let attendees: Set = ["Alicia", "Bethany", "Diana"] print(employees.isStrictSuperset(of: attendees)) // Prints "true" // A set is never a strict superset of itself: print(employees.isStrictSuperset(of: employees)) // Prints "false" |
| isSubset | Bool | Returns a Boolean value that indicates whether the set is a subset of another set. Set A is a subset of another set B if every member of A is also a member of B. let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"] let attendees: Set = ["Alicia", "Bethany", "Diana"] print(attendees.isSubset(of: employees)) // Prints "true" |
| isSuperset | Bool | Returns a Boolean value that indicates whether the set is a superset of the given set. Set A is a superset of another set B if every member of B is also a member of A. let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"] let attendees: Set = ["Alicia", "Bethany", "Diana"] print(employees.isSuperset(of: attendees)) // Prints "true" |
| @discardableResult mutating remove | Self.Element? | Removes the given element and all elements subsumed by it. In the following example, the .priority shipping option is removed fromthe options option set. Attempting to remove the same shipping optiona second time results in nil, because options no longer contains.priority as a member.var options: ShippingOptions = [.secondDay, .priority] let priorityOption = options.remove(.priority) print(priorityOption == .priority) // Prints "true" print(options.remove(.priority)) // Prints "nil" In the next example, the .express element is passed to remove(_:).Although .express is not a member of options, .express subsumesthe remaining .secondDay element of the option set. Therefore,options is emptied and the intersection between .express andoptions is returned.let expressOption = options.remove(.express) print(expressOption == .express) // Prints "false" print(expressOption == .secondDay) // Prints "true" |
| mutating subtract | void | Removes the elements of the given set from this set. In the following example, the elements of the employees set that arealso members of the neighbors set are removed. In particular, thenames "Bethany" and "Eric" are removed from employees.var employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"] let neighbors: Set = ["Bethany", "Eric", "Forlani", "Greta"] employees.subtract(neighbors) print(employees) // Prints "["Diana", "Chris", "Alicia"]" |
| subtracting | Self | Returns a new set containing the elements of this set that do not occur in the given set. In the following example, the nonNeighbors set is made up of theelements of the employees set that are not elements of neighbors:let employees: Set = ["Alicia", "Bethany", "Chris", "Diana", "Eric"] let neighbors: Set = ["Bethany", "Eric", "Forlani", "Greta"] let nonNeighbors = employees.subtracting(neighbors) print(nonNeighbors) // Prints "["Diana", "Chris", "Alicia"]" |
| symmetricDifference | Self | Returns a new option set with the elements contained in this set or in the given set, but not in both. |
| union | Self | Returns a new option set of the elements contained in this set, in the given set, or in both. This example uses the union(_:) method to add two more shipping optionsto the default set. let defaultShipping = ShippingOptions.standard let memberShipping = defaultShipping.union([.secondDay, .priority]) print(memberShipping.contains(.priority)) // Prints "true" |
| @discardableResult mutating update | Self.Element? | Inserts the given element into the set. If newMember is not contained in the set but subsumes current membersof the set, the subsumed members are returned. var options: ShippingOptions = [.secondDay, .priority] let replaced = options.update(with: .express) print(replaced == .secondDay) // Prints "true" |
Operators
| Name | Type | Summary |
|---|---|---|
| static func != | Bool | Returns a Boolean value indicating whether two values are not equal. Inequality is the inverse of equality. For any values a and b, a != bimplies that a == b is false.This is the default implementation of the not-equal-to operator ( !=)for any type that conforms to Equatable. |
Creates an empty option set.
This initializer creates an option set with a raw value of zero.