Использование констант
August 26, 2025 · View on GitHub
Constant в библиотеке AppState предоставляет доступ только для чтения к значениям в состоянии вашего приложения. Он работает аналогично Slice, но гарантирует, что доступные значения являются неизменяемыми. Это делает Constant идеальным для доступа к значениям, которые в противном случае могли бы быть изменяемыми, но должны оставаться только для чтения в определенных контекстах.
Ключевые особенности
- Доступ только для чтения: константы предоставляют доступ к изменяемому состоянию, но значения не могут быть изменены.
- Ограничено приложением: как и
Slice,Constantопределяется в расширенииApplicationи ограничен доступом к определенным частям состояния. - Потокобезопасность:
Constantобеспечивает безопасный доступ к состоянию в многопоточных средах.
Пример использования
Определение константы в приложении
Вот как вы определяете Constant в расширении Application для доступа к значению только для чтения:
import AppState
import SwiftUI
struct ExampleValue {
var username: String?
var isLoading: Bool
let value: String
var mutableValue: String
}
extension Application {
var exampleValue: State<ExampleValue> {
state(
initial: ExampleValue(
username: "Leif",
isLoading: false,
value: "value",
mutableValue: ""
)
)
}
}
Доступ к константе в представлении SwiftUI
В представлении SwiftUI вы можете использовать обертку свойства @Constant для доступа к постоянному состоянию только для чтения:
import AppState
import SwiftUI
struct ExampleView: View {
@Constant(\.exampleValue, \.value) var constantValue: String
var body: some View {
Text("Постоянное значение: \(constantValue)")
}
}
Доступ только для чтения к изменяемому состоянию
Даже если значение изменяемо в другом месте, при доступе через @Constant значение становится неизменяемым:
import AppState
import SwiftUI
struct ExampleView: View {
@Constant(\.exampleValue, \.mutableValue) var constantMutableValue: String
var body: some View {
Text("Изменяемое значение только для чтения: \(constantMutableValue)")
}
}
Лучшие практики
- Используйте для доступа только для чтения: используйте
Constantдля доступа к частям состояния, которые не должны изменяться в определенных контекстах, даже если они изменяемы в другом месте. - Потокобезопасность: как и другие компоненты AppState,
Constantобеспечивает потокобезопасный доступ к состоянию. - Используйте
OptionalConstantдля необязательных значений: если часть состояния, к которой вы обращаетесь, может бытьnil, используйтеOptionalConstantдля безопасной обработки отсутствия значения.
Заключение
Constant и OptionalConstant предоставляют эффективный способ доступа к определенным частям состояния вашего приложения только для чтения. Они гарантируют, что значения, которые в противном случае могли бы быть изменяемыми, рассматриваются как неизменяемые при доступе к ним в представлении, обеспечивая безопасность и ясность в вашем коде.
Этот перевод был сгенерирован автоматически и может содержать ошибки. Если вы носитель языка, мы будем признательны за ваши исправления через Pull Request.