快速递增 Int!不工作

2023-12-25

我理解选项是如何工作的,但这让我陷入了困境。我有一个变量叫做num我想增加它,所以我做了以下操作:

var num:Int! = 0
num++             //ERROR - Unary operator ++ cannot be applied to an operand of type Int!

但出于某种原因,斯威夫特不会让我增加展开的力Int,尽管它应该像普通的一样对待Int在幕后具有 nil 的能力。所以我尝试了以下方法,并且有效:

var num:Int! = 0
num = num + 1     //NO ERROR

但是,根据它给我的错误消息,我尝试了以下操作以使增量运算符仍然有效:

var num:Int! = 0
num!++            //NO ERROR

我的问题是为什么代码的第一位会中断,而代码的第二位和第三位则不会?另外,自从num is an Int!,难道我不能像平常一样对待它吗?Int?最后,自从一个Int!应该像普通人一样对待Int,我怎样才能在第三个例子中打开它?谢谢。


此错误发生在所有inout参数,应被视为错误。

通常的方式如何inout参数的工作原理是它们的 getter 被调用一次,它们的 setter 至少被调用一次。在这种情况下,getter 返回一个Int!:

let num: Int! = 0
let num2 = num // is inferred to be of type Int!

因此 getter/setter 的签名与函数/运算符期望的不同。但是,如果该值被分配给一个变量,编译器应该隐式地解开该值。Int或者像这样通过:

var num3 = 0 // is of type Int
num3 = num // gets automatically unwrapped

// also with functions
func someFunc(i: Int) {}
someFunc(num) // gets automatically unwrapped

边注:

如果你想传递一个,几乎会发生同样的错误Int到一个函数inout类型参数Int!。但这里很明显为什么这不起作用(逻辑上):Int从不采取nil.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速递增 Int!不工作 的相关文章

  • SwiftUI 中如何防止键盘推高视图? [复制]

    这个问题在这里已经有答案了 我是 SwiftUI 编程新手 我已经创建了一个视图 但是一旦用户点击文本字段 键盘就会出现 整个视图就会向上推 我该如何解决这个问题 我相信你可以使用 ignoresSafeArea keyboard 我在 X
  • 无法将项目添加到 UIView xib 内的 UICollectionView

    客观的 我想将我的 BusinessViewTableHeader UIView 作为 tableView 标题 tableView tableHeaderView BusinessViewTableHeader instanceFromN
  • 更改 UIView 的变换不会影响约束

    在 iOS 11 中 更改 UIView 的变换属性 例如缩放 不会影响绑定到该视图的约束 在 iOS 10 中一切都按预期工作 我有代码 import UIKit class TestViewController UIViewContro
  • GCDAsyncSocket 多个连接不会接受来自多个套接字的数据

    我正在尝试编写一个同时连接到多个套接字的应用程序 当连接新套接字时 我在从旧套接字接收数据时遇到问题 最主要的是委托没有被先前连接的套接字激活 这是我的总体计划 var struct serverlist Create array for
  • 使用 Swift 的 UIPopoverController、Xcode 6、IOS 8

    我在使用 swift 使 UIPopover 出现时遇到一些麻烦 注释掉的代码在 Objective C 中工作正常 但在 Swift 中不起作用 当我点击视图控制器中的 时 我确实在调试器中得到了 点击 但是没有出现弹出窗口 class
  • 为什么NWPathMonitor状态总是满足?

    当没有连接时 我从 URL 会话中收到一条错误消息 指出请求超时 我正在使用网络协议来事先检查连接情况 但显然当我在内部调用它时这不起作用viewDidLoad static func startUpdateProcess let moni
  • 如何在 Swift 项目中导入 Zbar 框架

    我有一个项目 目前正在尝试转换为 Swift 项目 但我不知道如何呈现从相机源进行扫描的 Zbar 条形码阅读器 在我当前的项目中 我这样调用 IBAction scanButton id sender ADD present a barc
  • dispatch_async UIWebView 加载请求

    我正在加载我的应用程序中的 JavaScript 该脚本将尝试找到解决方案 这可能需要一些时间 我不想等待该解决方案超过 5 秒 在这种情况下 我只想停止请求并向用户显示一条消息 我一直在尝试使用 NSTimers 和dispatch as
  • Swift 中的浮点数除法和转换

    我正在尝试学习 Swift 我做了一个简单的平均函数 func average numbers Int gt Float var sum 0 for number in numbers sum number return Float sum
  • 是否可以禁用用户按下通知横幅时打开应用程序的机制?

    使用iOS13 4 XCode11 4 Swift5 2 在我当前的应用程序中 我成功地创建了本地通知 发生通知时会显示横幅 横幅的显示与应用程序状态无关 即打开的应用程序在前台或后台运行 或者即使应用程序完全关闭 到目前为止 一切都很好
  • iOS 13 奇怪的搜索控制器差距

    当使用 Xcode 11 beta 5 在 iOS 13 beta 6 上运行应用程序时 我在呈现搜索结果视图控制器时遇到了奇怪的间隙 下面是它的一些设置方法 let searchResultsController BLSearchResu
  • 为什么找不到 iCloud 帐户/CKContainer

    请参阅下面我更新的问题 我正在使用 CloudKit 开发我的第一个应用程序 我正在尝试在查找交易之前测试用户是否连接到 iCloud 这是我的代码 显示各种测试 func isICloudContainerAvailable gt Boo
  • 使用未解析的标识符

    我的应用程序工作正常 现在 Xcode 突然给我这个错误 使用未解析的标识符 cardWasRemoved func addNewCards countOfCards countOfCards 1 if countOfCards gt 0
  • 从代码覆盖率中排除 SwiftUI 预览?

    我无法将代码覆盖率提高到最低限度 90 因为 XCode 考虑了 PreviewProvider 我应该怎么办 删除所有 SwiftUI 预览 或者有没有办法可以排除一些带有 PreviewProvider 关键字等的行 Xcode 版本
  • Swift Mirror 反射不返回 UIVIew 上的属性

    尝试使用以下内容获取 UIView 或 UIViewController 的所有属性 func propertysNames gt String var s String for c in Mirror reflecting self ch
  • Swift IOS,如何将应用程序用户输入的句子的字母大写,示例;第四个字母和第六个字母?

    用户在文本字段中输入一个句子 然后在一个文本字段中输入数字 4 在另一个文本字段中输入数字 6 它将第 4 个字母和第 6 个字母所在的句子大写 例如 用户输入 一年有 12 个月 输出将是 一年有 12 个月 如何将句子中的第四个和第六个
  • 将活动指示器添加到 UIAlertView

    我正在尝试添加UIActivityIndicatorView to UIAlertView但无法完成它 我看过有关此实现的帖子 发现它仅适用于 iOS7 以下的版本 下面是我尝试过的代码 var alert UIAlertView UIAl
  • FIREBASE 数据库 - 存储子节点的唯一密钥(Swift/IOS)

    我正在尝试存储生成的独特的钥匙当 childByAutoId 被调用时 理论上 它将有助于映射稍后需要在我的应用程序中发生的指定子项的更新或更改 我对 Firebase 的分层数据库相当陌生 如果下面描述的方法不正确 请随时提供替代方案 我
  • 在 Swift 中从另一个 ViewController 访问变量

    我有以下内容ViewController class PageContentViewController UIViewController var pageIndex Int 我如何访问pageIndex来自另一个 ViewControll
  • 如何一次运行多个后台线程任务?

    我正在尝试循环遍历包含 2016 年 10 月日期的 String 对象数组 这意味着 31 个 String 对象 2016 年 10 月 1 日 2016 年 10 月 31 日 对于每个对象 我想从数据库检索一些数据并附加返回值 也是

随机推荐

  • 在 Perl 中使用 Spreadsheet::ParseExcel,但需要帮助

    我有一个使用 Spreadsheet ParseExcel 的 Perl 程序 然而 出现了两个困难 我一直不知道如何解决 该程序的脚本如下 usr bin perl use strict use warnings use Spreadsh
  • 更新不同深度的嵌套字典的值

    我正在寻找一种更新字典的方法dictionary1与 dict 的内容update不覆盖levelA dictionary1 level1 level2 levelA 0 levelB 1 update level1 level2 leve
  • 如何从 Groovy 中的对象获取嵌套属性值?

    考虑在 Groovy 中您有类型的情况Company class Company def name def contactPerson and contactPerson of Contact type class Contact def
  • 使用指针访问未对齐的结构成员

    我有以下结构 typedef struct attribute packed uint16 t a uint32 t b st t gt b 成员未对齐 当我执行以下操作时 gcc 会发出警告 st t st uint32 t b p st
  • 如何在 C# 中将自定义 propertyGrid 与标准控件连接?

    我正在创建一个图形程序 我希望允许用户能够更改他们创建的图形的外观 为他们提供更改系列颜色 数据点大小等的机会 我允许他们通过使用 propertyGrid 来做到这一点 然而 在使用 Stack Overflow 的优秀人员的帮助下 我能
  • Javascript 中的经典字数统计算法

    拜托 伙计们 我哪里错了 经典的字数统计算法 给定一个字符串数组 返回一个 Map 每个字符串都有一个键 不同的字符串 其值是该字符串在数组中出现的次数 wordCount a b a c b a 2 b 2 c 1 wordCount c
  • URL 中的奇怪字符

    在我的网络服务器中 当用户请求带有奇怪字符的 URL 时 我会删除这些字符 系统会记录这些情况 当我检查已消毒的箱子时 我发现了这些 我很好奇这些 URL 的目的是什么 我检查了 IP 这些都是真实的人 并且像普通人一样使用网站 但这些人的
  • vim中将制表符替换为空格

    我想在 gVim 中将制表符转换为空格 我将以下行添加到我的 vimrc set tabstop 2 它可以在两个空格处停止 但看起来仍然像插入了一个 tab 键 之后我尝试使用 h 键来计算空格数 我不知道应该怎么做才能让 gVim 将制
  • 在 iOS 上使用 OpenAL 进行声音捕捉

    我正在尝试使用 OpenAL 在 iOS 上进行声音捕获 我正在编写一个跨平台库 这就是为什么我避免使用特定于 iOS 的声音录制方式 开箱即用的 OpenAL 捕获不起作用 但存在一个已知的解决方法 在开始捕获之前打开输出上下文 http
  • 当前上下文中不存在名称“ViewBag” - Visual Studio 2015

    我再次开始使用 ASP NET 进行开发 但在 Visual Studio 中遇到了一个小错误 我的 cshtml 文件在使用一些 razor 函数时显示错误 例如 名称 ViewBag 在当前上下文中不存在 这是一张图片 我正在使用一个演
  • 如何用长文本填充DIV并在溢出时显示省略号

    我有以下 JSFiddle http jsfiddle net ofrj55j4 21 http jsfiddle net ofrj55j4 21 如何在显示省略号之前在 DIV 中显示尽可能多的文本 现在只显示一行 HTML div cl
  • 是否可以在javascript中创建固定长度的数组?

    在Javascript中 是否可以创建一个保证长度保持不变的数组 例如 数组A创建的长度为 2 随后 任何调用的尝试A push or A pop 或设置值A 5 将失败 A length永远是 2 这是输入数组的方式 例如Float32A
  • 选择列表框中的项目后打开新表单

    我的表单上有一个列表框和一个按钮 列表框包含 3 个元素 房屋 人物 户外 我还创建了 3 个表单来表示列表框中的值 我希望用户突出显示列表框中的项目 单击按钮后我想打开用户选择的表单 我怎样才能实现这个目标 我已经尝试过这个链接 通过单击
  • groovy 脚本中提供的名称无效(机制级别:KrbException:无法找到默认领域)

    我有一个连接到 MSSQL 数据库的 groovy 脚本 几周前它工作得很好 但今天我上传了 mac os 的最后一个版本 我的脚本给了我这个例外 Caught java sql SQLException I O Error GSS Fai
  • d3.js:强制布局中建议的节点位置

    我想创建一个图表 其中节点具有建议的位置 但我也想使用力布局来确保节点本身不重叠 这在d3中可能吗 是的 您可以通过以下方式执行此操作 禁用默认的重力和电荷力 实施碰撞检测 http mbostock github com d3 talk
  • Dockerhub 的访问令牌

    我创建了一个存储库hub docker com现在想要使用我的凭据将我的映像推送到 Dockerhub 我想知道是否必须使用我的用户名和密码 或者是否可以创建某种访问令牌来推送 docker 映像 我想做的是使用docker image来自
  • 如何找到 php_smart_string.h 而不是 php_smart_str.h?

    It s me tmp pear install inclued 0 1 3 make bin bash tmp pear install inclued 0 1 3 libtool mode compile cc I I tmp pear
  • 创建 DLL 以在两个进程之间共享内存

    我需要使用 DLL 来实现类似于 Linux 共享内存的功能 我的Windows编程经验很少 但我认为有可能实现我的目标 我想要类似下面的东西 DLL int x void write int temp x temp int read re
  • Webpack 错误:请手动安装 sqlite3 包

    我正在使用 Electron 和 Sequelize 构建一个应用程序 我开始配置数据库 然后 我收到此错误 未捕获的错误 请手动安装 sqlite3 包 在新的 ConnectionManager home matheusdrdj Doc
  • 快速递增 Int!不工作

    我理解选项是如何工作的 但这让我陷入了困境 我有一个变量叫做num我想增加它 所以我做了以下操作 var num Int 0 num ERROR Unary operator cannot be applied to an operand