Nos meus projetos Objective-C, geralmente uso um arquivo de constantes globais para armazenar itens como chaves e nomes de notificação NSUserDefaults
. Parece algo como isto:
@interface GlobalConstants : NSObject
extern NSString *someNotification;
@end
@implementation GlobalConstants
NSString *someNotification = @"aaaaNotification";
@end
Como faço exatamente a mesma coisa no Swift?
ios
objective-c
swift
user1028028
fonte
fonte
Respostas:
Estruturas como espaço para nome
Na IMO, a melhor maneira de lidar com esse tipo de constantes é criar um Struct.
Então, por exemplo, chame assim no seu código:
Aninhamento
Se você deseja uma organização melhor, aconselho o uso de subestruturas segmentadas
Então você pode apenas usar, por exemplo
K.Path.Tmp
Exemplo do mundo real
Esta é apenas uma solução técnica, a implementação real no meu código se parece mais com:
e
fonte
Constant.swift
arquivo com estruturas separadas, mas não encapsulado em uma grandeConstants
estrutura para evitar chamadas muito longas para uma constante. Então eu chamo emNotificationKey.Welcome
vez deConstants.NotificationKey.Welcome
Constants.swift
) e sempre parecem iguais: começando com maiúsculas e com um nome de categoria significativo como "NotificationKey", "SegueIdentifier" ou "Path", .. . Assim eu posso ver facilmente quando é uma constante;)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 } }
Estou atrasado para a festa.
Não importa como eu gerencio o arquivo de constantes, para que faça mais sentido para os desenvolvedores enquanto escrevia o código rapidamente.
PARA URL:
Para CLIENTES:
PARA TODAS AS CHAVES USADAS NO APP
PARA CONSTANTES DE CORES:
Você pode agrupar todos esses arquivos em um grupo comum chamado Constants no seu projeto Xcode.
E para mais, assista a este vídeo
fonte
Embora eu prefira a maneira do @ Francescu (usando uma estrutura com propriedades estáticas), você também pode definir constantes e variáveis globais:
Observe, porém, que diferentemente das variáveis / constantes locais e das propriedades de classe / estrutura, os globais são implicitamente preguiçosos, o que significa que são inicializados quando são acessados pela primeira vez.
Leitura sugerida: Variáveis globais e locais , e também variáveis globais no Swift não são variáveis
fonte
Constant.swift
ViewController.swift
fonte
Considere enumerações. Eles podem ser divididos logicamente para casos de uso separados.
Um benefício exclusivo ocorre quando você tem uma situação de opções mutuamente exclusivas, como:
Neste exemplo, você receberá um erro de compilação porque não lidou com o caso de
PhotoMetaKeys.DateTaken
.fonte
Ou apenas no GlobalConstants.swift:
fonte
Como outros já mencionaram, qualquer coisa declarada fora de uma classe é global.
Você também pode criar singletons:
Sempre que você quiser usar algo desta classe, por exemplo, escreva:
Se você agora escreve
println(TestClass.sharedInstance.number)
de qualquer lugar do seu projeto, imprime1
no log. Isso funciona para todos os tipos de objetos.tl; dr: sempre que você quiser tornar tudo em uma classe global, adicionar
static let sharedInstance = YourClassName()
à classe e endereçar todos os valores da classe com o prefixoYourClassName.sharedInstance
fonte
O que fiz no meu projeto Swift
1: Criar um novo arquivo Swift
2: Crie uma estrutura e uma constante estática nele.
3: Para usar, use YourStructName.baseURL
Nota: Após a criação da inicialização, leva pouco tempo para que seja exibida em outros controladores de exibição após 2-5 segundos.
fonte
Para notificações, você pode usar a extensão, algo como isto:
E use-o como
NotificationCenter.default.post(name: .testNotification, object: nil)
fonte
Para ter constantes globais em meus aplicativos, é isso que faço em um arquivo Swift separado :
É fácil de usar e ligar para qualquer lugar como este:
fonte
Cores
Fontes
Para outros - tudo o mesmo que na resposta aceita.
fonte
De acordo com os documentos rápidos, as variáveis globais são declaradas no escopo do arquivo.
Basta criar um arquivo rápido (por exemplo: Constnats.swift) e declarar suas constantes lá:
e chame-o de qualquer lugar do seu projeto, sem a necessidade de mencionar struct, enum ou nome da classe.
Eu acho que isso é muito melhor para a legibilidade do código.
fonte
Versão Swift 4
Se você deseja criar um nome para o NotificationCenter:
Assine as notificações:
Enviar notificação:
Se você quer apenas uma classe com variáveis para usar:
Ou:
fonte
Enums sem caixa também podem ser usados.
Vantagem - Eles não podem ser instanciados.
fonte
Aprenda com a Apple é a melhor maneira.
Por exemplo, a notificação do teclado da Apple:
Agora eu aprendo com a Apple:
Além do mais
NSAttributedString.Key.foregroundColor
:Agora eu aprendo da Apple:
uso:
Aprenda com a Apple é a maneira que todos podem fazer e promover facilmente a qualidade do seu código.
fonte