В моих проектах Objective-C я часто использую файл глобальных констант для хранения таких вещей, как имена уведомлений и ключи NSUserDefaults
. Это выглядит примерно так:
@interface GlobalConstants : NSObject
extern NSString *someNotification;
@end
@implementation GlobalConstants
NSString *someNotification = @"aaaaNotification";
@end
Как мне сделать то же самое в Swift?
ios
objective-c
swift
user1028028
источник
источник
Ответы:
Структуры как пространство имен
ИМО лучший способ справиться с этим типом констант - это создать Struct.
Затем, например, назовите это так в своем коде:
гнездование
Если вы хотите лучшую организацию, я советую вам использовать сегментированные подструктуры
Тогда вы можете просто использовать, например,
K.Path.Tmp
Пример из реального мира
Это всего лишь техническое решение, фактическая реализация в моем коде больше похожа на:
и
источник
Constant.swift
файлом с разделенными структурами, но не инкапсулированным в большуюConstants
структуру, чтобы избежать слишком длинного вызова константы. Поэтому я звонюNotificationKey.Welcome
вместоConstants.NotificationKey.Welcome
Constants.swift
) и всегда выглядят одинаково: начиная с прописных букв и с содержательным именем категории, таким как «NotificationKey», «SegueIdentifier» или «Path», .. Так что я легко вижу, когда это константа;)struct Helpers { static func RGBCOLOR(red: Int, green: Int, blue: Int) -> UIColor { return UIColor(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1) } static func IOS7VERSION() -> Bool { return UIDevice.currentDevice().systemVersion.compare("7.0", options: .NumericSearch, range: nil, locale: nil) != .OrderedAscending } }
Я опаздываю на вечеринку.
Неважно, как я управляю файлом констант, чтобы он был более понятным для разработчиков при написании кода на языке swift.
ДЛЯ URL:
Для пользовательских:
Для всех ключей, используемых в приложении
ДЛЯ ЦВЕТНЫХ КОНСТАНТ:
Вы можете обернуть все эти файлы в общую группу с именем Constants в вашем проекте XCode.
И еще смотреть это видео
источник
Хотя я предпочитаю способ @ Francescu (используя структуру со статическими свойствами), вы также можете определить глобальные константы и переменные:
Однако обратите внимание, что в отличие от локальных переменных / констант и свойств класса / структуры глобальные переменные неявно ленивы, что означает, что они инициализируются при первом обращении к ним.
Предлагаемое чтение: глобальные и локальные переменные , а также глобальные переменные в Swift не являются переменными
источник
Constant.swift
ViewController.swift
источник
Рассмотрим перечисления. Они могут быть логически разбиты на отдельные варианты использования.
Одно уникальное преимущество происходит, когда у вас есть ситуация взаимоисключающих опций, таких как:
В этом примере вы получите ошибку компиляции, потому что вы не обработали случай
PhotoMetaKeys.DateTaken
.источник
Или просто в GlobalConstants.swift:
источник
Как уже упоминалось, все, что объявлено вне класса, является глобальным.
Вы также можете создавать синглтоны:
Всякий раз, когда вы хотите использовать что-то из этого класса, вы, например, пишете:
Если вы сейчас напишите
println(TestClass.sharedInstance.number)
из любого места в вашем проекте, вы напечатаете1
в журнал. Это работает для всех видов объектов.tl; dr: Каждый раз, когда вы хотите сделать все в классе глобальным, добавить
static let sharedInstance = YourClassName()
его в класс и обратиться ко всем значениям класса с префиксомYourClassName.sharedInstance
источник
То, что я сделал в своем проекте Swift
1. Создание нового файла Swift
2. Создание в нем структуры и статической константы.
3: Для использования просто используйте YourStructName.baseURL
Примечание. После создания инициализация занимает немного времени, поэтому через 2-5 секунд она будет отображаться в других контроллерах представления.
источник
Для уведомлений вы можете использовать расширение, что-то вроде этого:
И используйте это как
NotificationCenter.default.post(name: .testNotification, object: nil)
источник
Чтобы иметь глобальные константы в моих приложениях, это то, что я делаю в отдельном файле Swift :
Его легко использовать, и звонить везде так:
источник
Цвета
шрифты
Для других - все так же, как в принятом ответе.
источник
Согласно документам swift, глобальные переменные объявляются в области видимости файла.
Просто создайте быстрый файл (например, Constnats.swift) и объявите там свои константы:
и вызывайте его из любой точки вашего проекта, не упоминая имя struct, enum или class.
Я думаю, что это намного лучше для читабельности кода.
источник
Версия Swift 4
Если вы хотите создать имя для NotificationCenter:
Подписаться на уведомления:
Отправить уведомление:
Если вы просто хотите использовать класс с переменными:
Или:
источник
Также можно использовать перечисления без регистра.
Преимущество - они не могут быть созданы.
источник
Учиться у Apple - лучший способ.
Например, уведомление от клавиатуры Apple:
Теперь я учусь у Apple:
Более того
NSAttributedString.Key.foregroundColor
:Теперь я изучаю форму Apple:
использование:
Учиться у Apple - это то, что каждый может сделать и легко продвигать качество вашего кода.
источник