更新具有特定索引的元组数组

时间:2016-10-12 20:04:08

标签: ios arrays swift tuples

我试图更新我的多维数组。首先,我过滤一个名为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")
    }
}

2 个答案:

答案 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行中,您尝试将descriptionTranferredString)分配给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
    }
}