如何在递增 Swift 后赋值?

Posted

技术标签:

【中文标题】如何在递增 Swift 后赋值?【英文标题】:How to assign value after increment Swift? 【发布时间】:2020-06-06 07:39:55 【问题描述】:
var str = ["Franc": 2]
var a = 1
str["Franc"] = a += 1
print(str)

当我尝试此代码时,我在 "str["Franc"] = a += 1" 行出现错误,即“无法将类型 '()' 的值分配给类型 'Int?'” 如何解决这个问题。我需要它在单行 提前谢谢你

【问题讨论】:

基本上是Multiple variable assignment in Swift的副本。 另见increment Error in swift 3 我的意思是将“a”的值设置为字典然后递增。怎么可能在一行 【参考方案1】:

我们只能在 Objective C 中直接这样做:

在目标 C 中:

[str setValue:[NSNumber numberWithInt:a+=1] forKey:@"Franc"];

在 Swift 中

str["Franc"] = a
a += 1

【讨论】:

这是唯一可行的方法?【参考方案2】:

你可以像这样增加数字

str["Franc"]! = a ; a += 1

赋值

var str = ["Franc": 2]
str["Franc"]! += 1

现在str["Franc"] 将返回 3

如果你想避免强制展开

str["Franc"] = (str["Franc"] ?? 0) + 1 

你也可以使用if let

if let num = str["Franc"] as? Double 
    str["Franc"] = num + 1

【讨论】:

我的意思是将“a”的值设置为字典然后递增。怎么可能在一行 str["Franc"]! = a ; a += 1 这就是你如何在一行中做到这一点......【参考方案3】:

我认为你不能在一行中做到这一点:

var str = ["Franc": 2]
var a = 1
str["Franc"] = a 
a += 1
print(str)

【讨论】:

您没有在答案中增加 a,看起来这是 OP 想要的。 我的意思是将“a”的值设置为字典然后递增。怎么可能在一行 好吧,我的错误错过了阅读问题,所以你想将 a 添加到字典中,然后增加字典值或然后增加 a? 我认为你不能在一行中同时完成这两项工作。

以上是关于如何在递增 Swift 后赋值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在OC中使用Swift如何在Swift中使用OC

如何在Swift的Table View中进行分页?

iOS Swift4如何保护接口中定义的计算属性不被赋值?

Swift:$0 在 Array.forEach 中是如何工作的?

arcgis如何批量给一字段赋值

Swift 中的多变量赋值