Swift 4:如何在全局类中创建存储productID、quantity、price的多维数组?
在Swift 4中实现全局关联商品数组的方案
嘿,这个需求挺常见的,我来帮你一步步搞定!
首先,咱们别直接用三个独立数组分别存productID、quantity和price——那样后期维护很容易出现数据错位的问题(比如改了数量数组却忘了同步价格)。最合理的做法是先定义一个数据模型,把这三个关联字段封装在一起,用Swift的struct就非常合适:
// 定义商品数据模型,把三个关联字段打包 struct ProductItem { let productID: Int // 产品ID设为let,因为一般不会随便修改 var quantity: Int // 数量和价格可能变动,用var var price: Double }
接下来,你要的全局数组有两种实现方式,看你偏好哪种:
方式1:直接声明文件级别的全局数组
在你的Swift文件最顶部(所有类、结构体的外面)声明这个数组,这样整个项目里的代码都能访问到它:
// 全局商品数组,初始化为空 var globalProducts: [ProductItem] = []
方式2:用全局管理类的静态属性存储
如果你希望把这类全局数据统一放在一个专门的类里管理(更规范,方便后续扩展),可以写一个全局类,用静态属性来存数组:
// 全局数据管理类,专门存放全局共享的数据 class GlobalDataManager { // 静态属性,全局可访问,初始为空数组 static var products: [ProductItem] = [] }
怎么添加示例数据?
现在你可以把你给出的示例数据(productID=1,quantity=3,price=1.00)添加到数组里:
// 方式1的添加方式 let sampleProduct = ProductItem(productID: 1, quantity: 3, price: 1.00) globalProducts.append(sampleProduct) // 方式2的添加方式 GlobalDataManager.products.append(ProductItem(productID: 1, quantity: 3, price: 1.00))
如何访问数组里的数据?
之后在项目的任何地方,你都可以轻松访问这些关联数据,比如:
// 方式1的访问示例 if let firstProduct = globalProducts.first { print("产品ID:\(firstProduct.productID),数量:\(firstProduct.quantity),价格:\(firstProduct.price)") } // 方式2的访问示例 if let firstProduct = GlobalDataManager.products.first { print("产品ID:\(firstProduct.productID),数量:\(firstProduct.quantity),价格:\(firstProduct.price)") }
这种用结构体封装的方式,能保证每个productID始终和对应的quantity、price绑定在一起,代码可读性和维护性都比分散数组高得多,推荐你用这种方案~
内容的提问来源于stack exchange,提问作者Utku Dalmaz
相关产品推荐
相关产品推荐

