当我在我的数组上使用附加操作时,所有元素都变得具有相同的值
When I use append operation on my array all elements become to have the same value
我有class个订单:
class Order {
var type_id = ""
var model_id = ""
var hourly = serviceByHours()
var transfer = serviceByTransfer()
var custom = serviceByReis()
}
struct serviceByHours {
var undefinedTime = "1"
var addressOfRequest = ""
var addressOfDelivery = ""
var detailedText = ""
var startofWork = ""
var endOfWork = ""
}
struct serviceByTransfer {
var addressOfRequest = ""
var addressOfDelivery = ""
var detailedText = ""
var startofWork = ""
}
struct serviceByReis {
var addressOfRequest = ""
var addressOfDelivery = ""
var detailedText = ""
var startofWork = ""
var priceProposed = ""
}
我创建了这个 class 的实例并用值填充它。
在我创建 Array: var singleOrderClass = Order();
之后
var arrayOfOrders = [Order]
与订单类型。
但是当我使用追加操作时(arrayOfOrders.append(singleOrderClass))
我的所有元素都具有相同的值。我不知道为什么会这样?
我正在回复一个答案,因为我想显示我针对您的问题的输出的屏幕截图。我无法复制您所看到的。这个问题还有其他问题吗?
在您的(OP)评论之后,我用以下截图扩展了回复。一切正常。由于该数组是 references 的集合而不是数据的副本,因此您很可能会以某种方式覆盖实例值。确保为附加到数组的每个元素实例化一个新的 Order() class。不要在不首先创建新的 Order() 对象的情况下简单地在追加之间重用 singleOrderClass。
我有class个订单:
class Order {
var type_id = ""
var model_id = ""
var hourly = serviceByHours()
var transfer = serviceByTransfer()
var custom = serviceByReis()
}
struct serviceByHours {
var undefinedTime = "1"
var addressOfRequest = ""
var addressOfDelivery = ""
var detailedText = ""
var startofWork = ""
var endOfWork = ""
}
struct serviceByTransfer {
var addressOfRequest = ""
var addressOfDelivery = ""
var detailedText = ""
var startofWork = ""
}
struct serviceByReis {
var addressOfRequest = ""
var addressOfDelivery = ""
var detailedText = ""
var startofWork = ""
var priceProposed = ""
}
我创建了这个 class 的实例并用值填充它。
在我创建 Array: var singleOrderClass = Order();
之后
var arrayOfOrders = [Order]
与订单类型。
但是当我使用追加操作时(arrayOfOrders.append(singleOrderClass))
我的所有元素都具有相同的值。我不知道为什么会这样?
我正在回复一个答案,因为我想显示我针对您的问题的输出的屏幕截图。我无法复制您所看到的。这个问题还有其他问题吗?
在您的(OP)评论之后,我用以下截图扩展了回复。一切正常。由于该数组是 references 的集合而不是数据的副本,因此您很可能会以某种方式覆盖实例值。确保为附加到数组的每个元素实例化一个新的 Order() class。不要在不首先创建新的 Order() 对象的情况下简单地在追加之间重用 singleOrderClass。