如何在Swift中替换多元素NSArray的单个变量
how to replace a single variable of multi element NSArray in Swift
我正在努力更新由 Structs 创建的数组中的单个变量。
struct CurrentPolicyItems {
var id:Int
var currentInsured:String
var currentPremium:String
var currentXDate:String
var typeID:Int
var productID:Int
var buildingID:Int
var noteID:Int
var isUsed:Int
var isTemp:Int
}
struct CurrentPolicyTemp {
static var array = [CurrentPolicyItems]()
}
当我关闭 class 时,我需要将所有 var "isTemp" 从 1 更改为 0。并非所有元素都被使用,因此我需要在任何更新之前过滤它们。我相信我很接近,只是不能得到最后一点。
我试过:
if let items = CurrentPolicyTemp.array.firstIndex( where: { [=12=].isTemp == 1}) {
CurrentPolicyTemp.array[items].isTemp = 0
}
然而,众所周知,这只会更新单个元素。我已经尝试过 .filter,但遇到了“item is immutable”错误。
请帮忙。
传递给 swift 中所有函数的参数是只读的(本质上是不可变的),除非参数被标记为 inout。所以当你使用 filter
$0 本质上是不可变的,所以你不能简单地将它设置为 [=12=].isTemp = 0
你能做的是
CurrentPolicyTemp.array = CurrentPolicyTemp.array.map({if [=10=].isTemp == 1 {
var newPolicy = [=10=]
newPolicy.isTemp = 0
return newPolicy
}
return [=10=] })
我在这里做的不是尝试改变 [=13=]
我创建了 $0 的新副本并改变它。
我推荐使用 for
循环,其中包含 where
子句作为过滤器
for (index, element) in CurrentPolicyTemp.array.enumerated() where element.isTemp == 1 {
CurrentPolicyTemp.array[index].isTemp = 0
}
Array.firstIndex
通过循环迭代获取符合以下条件的FIRST索引。您只需退后一步,自己动手做...
for (index, item) in CurrentPolicyTemp.array.enumerated() where item.isTemp == 1 {
CurrentPolicyTemp.array[index].isTemp = 0
}
或者更简单地说:
for (index, item) in CurrentPolicyTemp.array.enumerated() {
if(item.isTemp == 1) {
CurrentPolicyTemp.array[index].isTemp = 0
}
}
我正在努力更新由 Structs 创建的数组中的单个变量。
struct CurrentPolicyItems {
var id:Int
var currentInsured:String
var currentPremium:String
var currentXDate:String
var typeID:Int
var productID:Int
var buildingID:Int
var noteID:Int
var isUsed:Int
var isTemp:Int
}
struct CurrentPolicyTemp {
static var array = [CurrentPolicyItems]()
}
当我关闭 class 时,我需要将所有 var "isTemp" 从 1 更改为 0。并非所有元素都被使用,因此我需要在任何更新之前过滤它们。我相信我很接近,只是不能得到最后一点。
我试过:
if let items = CurrentPolicyTemp.array.firstIndex( where: { [=12=].isTemp == 1}) {
CurrentPolicyTemp.array[items].isTemp = 0
}
然而,众所周知,这只会更新单个元素。我已经尝试过 .filter,但遇到了“item is immutable”错误。
请帮忙。
传递给 swift 中所有函数的参数是只读的(本质上是不可变的),除非参数被标记为 inout。所以当你使用 filter
$0 本质上是不可变的,所以你不能简单地将它设置为 [=12=].isTemp = 0
你能做的是
CurrentPolicyTemp.array = CurrentPolicyTemp.array.map({if [=10=].isTemp == 1 {
var newPolicy = [=10=]
newPolicy.isTemp = 0
return newPolicy
}
return [=10=] })
我在这里做的不是尝试改变 [=13=]
我创建了 $0 的新副本并改变它。
我推荐使用 for
循环,其中包含 where
子句作为过滤器
for (index, element) in CurrentPolicyTemp.array.enumerated() where element.isTemp == 1 {
CurrentPolicyTemp.array[index].isTemp = 0
}
Array.firstIndex
通过循环迭代获取符合以下条件的FIRST索引。您只需退后一步,自己动手做...
for (index, item) in CurrentPolicyTemp.array.enumerated() where item.isTemp == 1 {
CurrentPolicyTemp.array[index].isTemp = 0
}
或者更简单地说:
for (index, item) in CurrentPolicyTemp.array.enumerated() {
if(item.isTemp == 1) {
CurrentPolicyTemp.array[index].isTemp = 0
}
}