在结构或其他方法中全局存储数组
Store array globally in struct or other method
我有一个结构元素数组,我想将其存储在全局范围内,这样我就可以在不同的 类 中访问它,而不必 运行 一遍又一遍地填充它的查询。
我有一个结构:
struct collectionStruct {
var name : String
var description : String
var title : String
var image : PFFile
var id: String
}
和一个变量:
var collectionArray = [collectionStruct]()
和一些构建数组的代码:
for object in items {
let arrayName = object.object(forKey: fromName) as! String
let arrayDescription = object.object(forKey: fromDescription) as! String
let arrayTitle = object.object(forKey: fromTitle) as! String
let arrayImage = object.object(forKey: fromImage) as! PFFile
let arrayID = object.objectId as String!
collectionArray.append(collectionStruct(name: arrayName,
description: arrayDescription,
title: arrayTitle,
image: arrayImage,
id: arrayID!))
}
我正在考虑创建另一个结构来保存数组本身,但我在这里有点迷路了。这就是我的想法:
struct globalArray {
var collectionArray = [collectionStruct]()
}
但可能还有一段路要走
您可以将单例用于全局 class,它可以从任何地方访问:
class GlobalArray {
static let shared = GlobalArray()
var collectionArray = [collectionStruct]()
}
并像这样访问以分配或读取值:
GlobalArray.shared.collectionArray
你可以声明
var collectionArray = [collectionStruct]()
在任何文件的顶层(在任何对象之外),并且它将在全球范围内可用
例如
var collectionArray = [collectionStruct]()
class MyClass {
func printArray() {
print(collectionArray)
}
}
您应该考虑将您的结构命名为 CollectionStruct 而不是 collectionStruct - 因为这表明它是一种类型。要在任何地方访问数组,您可以创建一个单例。对于单例,您可以通过给它一个私有构造函数来确保只有一个实例可用。这是一个例子:
class Global {
private init() { }
static let sharedInstance = Global()
var collection = [CollectionStruct]()
}
要使用它,您将使用以下内容:
Global.sharedInstance.collection
我有一个结构元素数组,我想将其存储在全局范围内,这样我就可以在不同的 类 中访问它,而不必 运行 一遍又一遍地填充它的查询。
我有一个结构:
struct collectionStruct {
var name : String
var description : String
var title : String
var image : PFFile
var id: String
}
和一个变量:
var collectionArray = [collectionStruct]()
和一些构建数组的代码:
for object in items {
let arrayName = object.object(forKey: fromName) as! String
let arrayDescription = object.object(forKey: fromDescription) as! String
let arrayTitle = object.object(forKey: fromTitle) as! String
let arrayImage = object.object(forKey: fromImage) as! PFFile
let arrayID = object.objectId as String!
collectionArray.append(collectionStruct(name: arrayName,
description: arrayDescription,
title: arrayTitle,
image: arrayImage,
id: arrayID!))
}
我正在考虑创建另一个结构来保存数组本身,但我在这里有点迷路了。这就是我的想法:
struct globalArray {
var collectionArray = [collectionStruct]()
}
但可能还有一段路要走
您可以将单例用于全局 class,它可以从任何地方访问:
class GlobalArray {
static let shared = GlobalArray()
var collectionArray = [collectionStruct]()
}
并像这样访问以分配或读取值:
GlobalArray.shared.collectionArray
你可以声明
var collectionArray = [collectionStruct]()
在任何文件的顶层(在任何对象之外),并且它将在全球范围内可用
例如
var collectionArray = [collectionStruct]()
class MyClass {
func printArray() {
print(collectionArray)
}
}
您应该考虑将您的结构命名为 CollectionStruct 而不是 collectionStruct - 因为这表明它是一种类型。要在任何地方访问数组,您可以创建一个单例。对于单例,您可以通过给它一个私有构造函数来确保只有一个实例可用。这是一个例子:
class Global {
private init() { }
static let sharedInstance = Global()
var collection = [CollectionStruct]()
}
要使用它,您将使用以下内容:
Global.sharedInstance.collection