Просто у меня есть структура, в которой хранятся константы приложения, как показано ниже:
struct Constant {
static let ParseApplicationId = "xxx"
static let ParseClientKey = "xxx"
static var AppGreenColor: UIColor {
return UIColor(hexString: "67B632")
}
}
Эти константы можно использовать в коде Swift, Constant.ParseClientKey
например, вызвав . Но в моем коде он также содержит классы Objective-C. Итак, мой вопрос: как использовать эти константы в коде Objective-C?
Если такой способ объявления констант не подходит, то как лучше всего создать глобальные константы, которые будут использоваться как в Swift, так и в коде Objective-C?
objective-c
swift
constants
Динь Куан
источник
источник
UIControlEvents.TouchUpInside
?NS_OPTIONS
перечислений стилей. СемантическиUIControlEvent
это все еще перечисляемый тип.Ответы:
К сожалению,
struct
в Objective-C нельзя открыть ни глобальные переменные. см. документацию .На данный момент, ИМХО, лучший способ выглядит примерно так:
В Objective-C вы можете использовать их так:
источник
ParseClientKey
или через классConstant.clientKey()
@objc class Constant: NSObject
@objc
перед каждым,class func
чтобы иметь возможность вызывать их из кода Objective C.@objcMembers
в классе, чтобы показать весь класс коду Objective-C.Почему бы не создать файл и с a,
struct
и с an@objc class
, примерно так:Для использования в файлах Objective-C добавьте это, когда вам нужно использовать константы:
Быстрое использование:
Использование Objective-C:
Таким образом, вы можете обновлять цвета, текст по умолчанию, URL-адреса веб-служб для всего приложения в одном месте.
источник
Вы должны сделать операторы let закрытыми, если хотите, чтобы другие типы Swift в своем коде получали доступ к этим константам только через класс:
В Swift их можно использовать так:
Следующая строка больше не будет компилироваться, поскольку оператор let является закрытым:
источник
Хотя это может быть поздно или излишне, я мог бы заставить его работать с помощью следующего кода:
Очевидно, что для использования в коде objc c необходимо выполнить #import "ProjectModuleName-Swift.h"
источник