У меня есть эта структура, определенная в собственном файле, и я хочу использовать ее в другом месте и при тестировании.
struct UserPermissions : OptionSetType {
let rawValue: UInt
static let CreateFullAccount = UserPermissions(rawValue: 1 << 1)
static let CreateCustomAccount = UserPermissions(rawValue: 1 << 2)
}
Когда я пытаюсь использовать его, я получаю сообщение об ошибке о том, что свойство не может быть объявлено общедоступным, поскольку тип использует внутренний тип.
public var userPermissions = UserPermissions()
Поэтому я подумал, что могу сделать его общедоступным, но это дает мне ошибку о необходимости публичной функции инициализации.
public struct UserPermissions : OptionSetType {
public let rawValue: UInt
static let CreateFullAccount = UserPermissions(rawValue: 1 << 1)
static let CreateCustomAccount = UserPermissions(rawValue: 1 << 2)
}
Поэтому я добавляю это к определению структуры, что приводит к сбою компилятора:
public init(rawValue: Self.RawValue) {
super.init(rawValue)
}
Некоторые элементы управления доступом, которые я все еще обдумываю в Swift. Что я делаю не так? Как я могу использовать этот OptionSetType?