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 VPS, WPS, 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
- Monitor initialization progress
- Verify configuration and API key validity
- Ensure features are ready for operation
Example Usage
let status = vpsSession.getFeatureStatus()
if status.contains(.badApiKey) {
print("Invalid API key - check your credentials")
} else if status.contains(.configurationFailed) {
print("Feature configuration failed")
} else if status.contains(.initializing) {
print("Feature is still initializing...")
} else if status == .ok {
print("Feature is ready and operational")
}
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!"
- Parameter arrayLiteral: A list of elements of the new set.
Overload 2
Summary
Creates a feature status from a C API status value.
- Parameter fromC: The status value from the underlying C API
Overload 3
Summary
Creates a feature status with the specified raw value.
- Parameter rawValue: The raw status value from the underlying C API
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]"
- Parameter sequence: The elements to use as members of the new set.
Properties
| Name | Type | Summary |
|---|---|---|
| static let badApiKey | NsdkFeatureStatus | Invalid or expired API key. The provided API key is not valid or has expired. Verify your API key and ensure it has the necessary permissions for the requested features. |
| 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 description | String | A textual representation of this instance. Calling this property directly is discouraged. Instead, convert an instance of any type to a string by using the String(describing:)initializer. This initializer works with any type, and uses the custom description property for types that conform toCustomStringConvertible:struct Point: CustomStringConvertible { let x: Int, y: Int var description: String { return "(\(x), \(y))" } } let p = Point(x: 21, y: 30) let s = String(describing: p) print(s) // Prints "(21, 30)" The conversion of p to a string in the assignment to s uses thePoint type's description 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" - Parameter member: The element to look for in the option set. - Returns: true if the option set contains member; otherwise,false. |
| 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. - Parameter other: An option set. |
| 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. - Parameter other: An option set. |
| 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. - Parameter other: An option set. |
| @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" - Parameter newMember: The element to insert. - Returns: (true, newMember) if newMember was not contained inself. Otherwise, returns (false, oldMember), where oldMember isthe member of the set equal to newMember. |
| 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" - Parameter other: An option set. - Returns: A new option set with only the elements contained in both this set and other. |
| 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" - Parameter other: A set of the same type as the current set. - Returns: true if the set has no elements in common with other;otherwise, false. |
| 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" - Parameter other: A set of the same type as the current set. - Returns: true if the set is a strict subset of other; otherwise,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" - Parameter other: A set of the same type as the current set. - Returns: true if the set is a strict superset of other; otherwise,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" - Parameter other: A set of the same type as the current set. - Returns: true if the set is a subset of other; otherwise, false. |
| 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" - Parameter other: A set of the same type as the current set. - Returns: true if the set is a superset of other; otherwise,false. |
| @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" - Parameter member: The element of the set to remove. - Returns: The intersection of [member] and the set, if theintersection was nonempty; otherwise, nil. |
| 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"]" - Parameter other: A set of the same type as the current set. |
| 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"]" - Parameter other: A set of the same type as the current set. - Returns: A new set. |
| symmetricDifference | Self | Returns a new option set with the elements contained in this set or in the given set, but not in both. - Parameter other: An option set. - Returns: A new option set with only the elements contained in either this set or other, 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" - Parameter other: An option set. - Returns: A new option set made up of the elements contained in this set, in other, or in both. |
| @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" - Returns: The intersection of [newMember] and the set if theintersection was nonempty; otherwise, nil. |
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.- Parameters: - lhs: A value to compare. - rhs: Another value to compare. |
Creates an empty option set.
This initializer creates an option set with a raw value of zero.