ios - the - Declarando Variables Globales en Swift
xcode kits (4)
Así es como lo hice ...
class MessageViewCell {
struct MessageViewCellHeightCache {
static var cache: [String:CGFloat] = Dictionary<String, CGFloat>()
}
}
Y accedí a ella de la siguiente manera:
MessageViewCell.MessageViewCellHeightCache.cache["first"] = 12.0
Quiero crear una matriz global de objetos personalizados a los que se pueda acceder a través de la aplicación (AppDelegate, clases de ViewController, clases de TableViewController, etc.). He investigado la manera de hacerlo, pero no he encontrado una respuesta. He intentado hacer que la matriz tenga un alcance público, pero recibo una advertencia de conformidad que dice Declaring public variable from internal class
y cuando intento acceder a ella en un archivo diferente, Use of unresolved identifier ''arrayObjectives''
un error que dice Use of unresolved identifier ''arrayObjectives''
¿Cómo haría para que esa matriz sea accesible globalmente para todos los archivos en la aplicación y dónde podría crear una instancia de esa matriz?
Del lenguaje de programación Swift -
Las variables globales son variables que se definen fuera de cualquier función, método, cierre o tipo de contexto.
Así que simplemente puede declarar su variable en la parte superior de cualquier archivo inmediatamente después de las declaraciones de import
.
Sin embargo, le sugiero que reconsidere seriamente. En general, los globales no son una buena idea. Usted está mejor con propiedades en un singleton o usando inyección de dependencia.
Tu segunda pregunta "¿Dónde crearía una instancia de la matriz?" es parte de la razón por la que los globales son malos: su ciclo de vida no está bien definido en términos de sus otros objetos. Un singleton que se inicializa en el primer uso elimina este problema.
Intenta hacer un nuevo archivo Swift con esto:
struct Constants {
static let appName: String = "My App"
struct Colors {
static let colorTextStandard = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.3) //#000000
}
struct Data {
static var myStrings = [String]() // Yea, this is not a constant, but that''s alright...
}
}
Luego puede referirse a esas constantes globales (o puede hacerlas variables) usando:
Constants.appName
o
Constants.Colors.colorTextStandard
o
Constants.Data.myStrings = [stringOne, stringTwo]
Puedes configurar Array global de esta manera:
import UIKit
var abc : String = String()
y puedes acceder a él en cualquier otro archivo como:
abc = "ABC"