我试图更新我的多维数组。首先,我过滤一个名为title的字符串,它作为我的标识符。然后我想替换此过滤数组的描述值。
我已经尝试用rowContent[1] = descriptionTranferred
之类的东西来解决这个问题(索引1处的值,这是描述,应该由descriptionTranferred中的值替换)。我也试过了rowContent.description = descriptionTranferred
,但也没有成功。
有没有办法更新我的数组中的描述值?
这是我的代码:
SWIFT 3
var rowContent = Array<(title: String, description: String)>()
func transferData(descriptionTranferred: String, identifier: String) {
if rowContent.contains(where: {$0.title == identifier}) {
rowContent[1] = descriptionTranferred
} else {
print ("nothing")
}
}
答案 0 :(得分:3)
它不是一个多维数组,而是带有命名参数的元组数组。尝试:
rowContent[1].description = descriptionTranferred
但我猜你是在尝试更改元组中与元数据匹配的元组中的描述,所以请替换if
条件:
if let index = rowContent.index(where: {$0.title == identifier}) {
rowContent[index].description = descriptionTranferred
}else {
print ("nothing")
}
答案 1 :(得分:1)
首先,您错过了函数的开头{
:p
var rowContent = Array<(title: String, description: String)>()
func transferData(descriptionTranferred: String, identifier: String) {
if rowContent.contains(where: {$0.title == identifier}) {
rowContent[1] = descriptionTranferred
} else {
print ("nothing")
}
}
在rowContent[1] = descriptionTranferred
行中,您尝试将descriptionTranferred
(String
)分配给rowContent[1]
,这是{{1}的元组}。
您需要将字符串分配给元组的正确组件:
(title: String, description: String)
此代码可能会崩溃。您始终在索引rowContent[1].description = descriptionTranferred
设置行的description
,而不考虑其标题。也许您打算为1
?
title == identifier
它会使它“工作”,但它是次优的。你不应该为此目的使用元组。结构是这种数据更合适的数据结构:
func transferData(descriptionTranferred: String, identifier: String) {
let rowsToUpdate = rows.filter{ $0.title == identifier }
if rowsToUpdate.isEmpty {
print("No rows to update.")
return
}
for var row in rowsToUpdate {
row.description = descriptionTranferred
}
}