ios – 添加到Array时无法推断通用参数’Element’

ios – 添加到Array时无法推断通用参数’Element’,第1张

概述我有一个数组字典: var myDict : [String:[SomeObj]] = [:] 为了填充它,我尝试在正确的索引处向数组添加值.如果数组不存在,则失败并在该索引处创建一个新数组: if myDict[key]?.append(val) == nil { myDict[key] = [val]} 我想我应该可以缩短到: myDict[key]?.append(val) ?? 我有一个数组字典:
var myDict : [String:[SomeObj]] = [:]

为了填充它,我尝试在正确的索引处向数组添加值.如果数组不存在,则失败并在该索引处创建一个新数组:

if myDict[key]?.append(val) == nil {    myDict[key] = [val]}

我想我应该可以缩短到:

myDict[key]?.append(val) ?? myDict[key] = [val]

但是,我得到错误:无法推断通用参数’元素’.为什么?

解决方法 Swift 3.0

考虑一个简单的概念: –

在单行中使用if … else时, *** 作应该是单个的,否则我们需要在括号下配对 *** 作以使其成为单个 *** 作,在我们的例子中,append(val)是单个 *** 作但是myDict [key] = [ val]是多个(myDict [key]是1,=赋值是1,[val]是1)所以我们使用括号将它们分组为单个.

以更简单的方式考虑以下算术运算.

//I need 10-5 = 5let a = 2*4+2-4-3*5print(a) // -9//so we can seprate by ()let b = ((2*4)+2)-(4-3)*5print(b) //5

在这里,我们指示编译器不是一个预期的方式让a.

另见,

let a:Int? = nilvar b:Int? = nillet d = 10let c = a ?? 10 * b ?? d

这里让c是错误的指令,错误是,

Value of optional type ‘Int?’ not unwrapped; dID you mean to use ‘!’
or ‘?’?

如果我强行打开选项a和b,则错误将变为,

unexpectedly found nil while unwrapPing an Optional value

所以常数c变为,

let c = a ?? 10 * (b ?? d) //100

那就是你应该在默认值周围使用括号.

myDict[key]?.append(val) ?? (myDict[key] = [val])
总结

以上是内存溢出为你收集整理的ios – 添加到Array时无法推断通用参数’Element’全部内容,希望文章能够帮你解决ios – 添加到Array时无法推断通用参数’Element’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1101411.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存