【发布时间】:2016-12-19 13:47:03
【问题描述】:
嗨,我需要在一个数组中附加一个结构,它是另一个结构的属性,我使用的是 Swift 3,但是没有附加任何东西,我不知道为什么,请帮忙?
import Foundation
struct Product {
var objectId: String
var name: String
var price: Double
var qty: Int
var img: String
var desc: String
var note: String
}
struct Order {
var objectId: String
var name: String
var detail: [Product]
mutating func addToDetail(_ product: Product) {
detail.append(product)
}
}
class OrderManager: NSObject {
static let shared = OrderManager()
var order: Order?
var orderCreated: Bool {
return self.order != nil
}
var partnerInOrder: String? {
return self.order?.objectId
}
func createOrderIfNeeded(partnerId: String, name: String) {
if self.order == nil {
self.order = Order(objectId: partnerId, name: name, detail: [Product]())
}
}
func addProduct(objectId: String, name: String, price: Double, qty: Int, img: String = "", desc: String = "", note: String = "") {
guard var order = self.order else {
return
}
let hasProduct = order.detail.contains(where: { $0.objectId == objectId })
if !hasProduct {
order.addToDetail(Product(objectId: objectId, name: name, price: price, qty: qty, img: img, desc: desc, note: note))
}
print("has product \(hasProduct)")
print("the whole order is \(self.order)")
}
func addOption() {}
func getProduct() {}
func getOption() {}
fileprivate func storeOrder() {}
}
正在进入结构的 addToDetail 函数,但我的数组始终为空
【问题讨论】:
-
是的,我什至注释了每次调用函数的if,但仍然是空的,奇怪!
-
你能不能在addToDetail方法里面放一个断点,看看数组是被分配了还是还是nil?