Swift 错误 - 不可变值 '' 可能不会传入输出

Posted

技术标签:

【中文标题】Swift 错误 - 不可变值 \'\' 可能不会传入输出【英文标题】:Swift error - immutable value '' may not be passed inoutSwift 错误 - 不可变值 '' 可能不会传入输出 【发布时间】:2015-02-10 10:32:13 【问题描述】:

我更新到了新的 Swift 1.1。我有一个可选变量:

let bookingButton: GreenButton?

当我尝试将此 UIView 子类添加为子视图(自身是 UIView)时,出现以下错误:

Immutable value '' may not be passed inout

有什么想法吗?

【问题讨论】:

使用“var”而不是“let” 此外,如果您尝试将隐​​式展开的可选(例如 UIView!)传递给期望展开类型(例如 UIView)作为 inout 参数的函数,您将得到这个错误信息。您必须将该函数的 inout 参数声明为隐式展开类型。 @PeterParker 这对我帮助很大。有相关文件吗? 【参考方案1】:

inout 指定可以由函数更改的参数。在这里,您传递了一个 let(一个不可变参数),所以这是不兼容的。您可以将 lookingButtonlet 更改为 var 以解决此问题。

如 Apple 文档中所述:

您只能将变量作为输入输出参数的参数传递。 您不能将常量或文字值作为参数传递,因为 常量和文字不能被修改。您放置一个 & 号 (&) 当您将变量作为参数传递给变量时,直接在变量名称之前 一个 inout 参数,表示它可以由 功能。

【讨论】:

以上是关于Swift 错误 - 不可变值 '' 可能不会传入输出的主要内容,如果未能解决你的问题,请参考以下文章

不能对不可变值使用变异 getter:'self' 是不可变错误

Swift 2在协议扩展中使用变异函数时出错“无法在不可变值上使用变异成员:'self'是不可变的

python函数使用参数技巧笔记

Swift可变集:找到重复元素

SQL Server - 按可变数量的参数过滤查询

SDK 8.3 不可变值...只有名为“附加”的变异成员