I have this struct defined in its own file and want to use it elsewhere and in testing.
struct UserPermissions : OptionSetType {
let rawValue: UInt
static let CreateFullAccount = UserPermissions(rawValue: 1 << 1)
static let CreateCustomAccount = UserPermissions(rawValue: 1 << 2)
}
When I try to use it I get an error about how the property cannot be declared public because the type uses an internal type.
public var userPermissions = UserPermissions()
So I thought I could make it public, but that gives me an error about needing a public init function.
public struct UserPermissions : OptionSetType {
public let rawValue: UInt
static let CreateFullAccount = UserPermissions(rawValue: 1 << 1)
static let CreateCustomAccount = UserPermissions(rawValue: 1 << 2)
}
So I add this to the definition of the struct, which causes the compiler to crash:
public init(rawValue: Self.RawValue) {
super.init(rawValue)
}
Some of the access control stuff I'm still wrapping my head around in Swift. What am I doing wrong? How can I use this OptionSetType?
Had you visited the
OptionSetType
protocol reference page, you would have found an example of what you need. YourUserPermissions
is a struct, there's nosuper
to be called.Now to answer your question: