Vídeo: Replicando valores de propriedades em objetos de tipo diferente 2024
Em Swift, as variáveis de suporte são explicitamente declaradas se necessário (geralmente no código convertido do Objective-C). Além disso, os getters não precisam usar a palavra-chave get. As propriedades Swift podem ser variáveis ou constantes; cada tipo pode ser armazenado ou calculado, da seguinte forma:
-
Declarando uma propriedade variável: Uma variável é introduzida com a palavra-chave var como em:
var _fetchedResultsController: NSFetchedResultsController? = nil
-
Declarando uma propriedade constante: Uma constante (ou seja, uma propriedade que não pode ser modificada) é introduzida com a palavra-chave let. A declaração anterior pode ser alterada para declarar uma constante da seguinte forma:
let _fetchedResultsController: NSFetchedResultsController? = nulo
-
Declarando uma propriedade armazenada: A declaração de _fetchedResultsController mostrada na lista a seguir é uma declaração típica de uma propriedade armazenada . Uma propriedade armazenada é uma propriedade armazenada como parte de uma instância da classe, enumeração ou estrutura.
// MARK: - Controlador de resultados obtidos var fetchedResultsController: NSFetchedResultsController {if _fetchedResultsController! = nil {return _fetchedResultsController!} deixe fetchRequest = NSFetchRequest () // Edite o nome da entidade conforme apropriado. deixe entity = NSEntityDescription. entityForName ("Evento", inManagedObjectContext: self. managedObjectContext!) fetchRequest. entidade = entidade // Defina o tamanho do lote para um número adequado. fetchRequest. fetchBatchSize = 20 // Edite a chave de classificação conforme apropriado. let classDescriptor = NSSortDescriptor (chave: "timeStamp", ascendente: false) let classDescriptors = [sortDescriptor] fetchRequest. SortDescriptors = [sortDescriptor] // Edite o caminho da chave do nome da seção e o nome do cache, se apropriado. // nil para o caminho da chave do nome da seção significa "sem seções". deixe aFetchedResultsController = NSFetchedResultsController (fetchRequest: fetchRequest, managedObjectContext: self. managedObjectContext !, sectionNameKeyPath: nil, cacheName: "Master") aFetchedResultsController. delegate = self _fetchedResultsController = aFetchedResultsController var error: NSError? = nulo se! _fetchedResultsController!. performFetch (& error) {// Substitua esta implementação por código para lidar com o erro apropriadamente. // abort () faz com que o aplicativo gere um // crash log e termine. Você não deve usar esta // função em um aplicativo de envio, embora possa ser útil durante o desenvolvimento. println ("Erro não resolvido (erro), (erro. userInfo)") abort ()} return _fetchedResultsController!} var _fetchedResultsController: NSFetchedResultsController?= nilBy padrão, a variável passada para o setter é denominada newValue,
e Swift usa o tipo apropriado para isso.
O exemplo usa um padrão Objective-C para uma variável de suporte: as propriedades armazenadas Swift não precisam começar com um caractere especial, como um sublinhado; no entanto, eles precisam ser inicializados e ter um tipo (talvez inferido a partir da inicialização) antes de serem usados.
var _fetchedResultsController: NSFetchedResultsController? = nulo
-
Declarando uma propriedade calculada com um getter e um setter: Este ponto merece um pouco de elucidação. A lista mostra um getter e setter básico de uma propriedade Swift. Você pode ver que myVar possui uma variável de backing do myInt. As palavras-chave get e set identificam o getter e setter.
var myInt: Int = 0 var myVar: Int {get {return myInt} set {myInt = newValue}} myVar = 20
É assim que você cria uma propriedade calculada .
Além dos getters e setters mostrados na figura a seguir, você pode usar observadores como mostrado na próxima listagem. Este código está no DetailViewController. arquivo rápido do Locatapp (do modelo do aplicativo de detalhes do mestre).
var detailItem: AnyObject? {didSet {// Atualize a vista. auto. configureView ()}} Defina um ponto de interrupção neste método e execute o aplicativo no iOS Simulator. O botão faz com que o método seja chamado.
Este é um bom lugar para chamar um atualizador de visualização (o que é exatamente o que é feito no modelo). Existem dois observadores que você pode usar:
-
didSet: isso é chamado após o fato.
-
willSet: Isto é chamado apenas antes que a configuração ocorra.