【问题标题】:How to assign value after increment Swift?如何在递增 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?'” 如何解决这个问题。我需要它在单行 提前谢谢你

【问题讨论】:

标签: swift swift5 swift-playground


【解决方案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?
  • 我认为你不能在一行中同时完成这两项工作。
猜你喜欢
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
相关资源
最近更新 更多