为什么 UITextField.text 是可选的?

2024-04-13

它开始时是一个空字符串而不是 nil。即使它被显式设置为 nil,它仍然是一个空字符串。我不明白。也许是为了通过分配 nil 来轻松清除?用它编写代码很笨拙。

var textField = UITextField()
print(textField.text) // prints "Optional("")"
textField.text = nil
print(textField.text) // prints "Optional("")"

这是历史性的事情。UITextField空字符串和空字符串之间没有任何区别nil细绳。在 Objective-C 中,没有必要区分它们,因为你可以调用方法nil在 Objective-C 中。

另外,Objective-C 中没有办法阻止用户分配nil到一个属性。 由此产生的合同是text可以是可选的。在 Objective-C 中这没有什么区别。

在 Swift 中我们无能为力,因为UITextField.text合同必须改变,可能会破坏许多已经编写的代码。请注意,即使nil永远不会从该方法返回,您仍然可以分配nil重置该值。

你可以在旧的 API 中找到数百种类似的情况。

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

为什么 UITextField.text 是可选的? 的相关文章

随机推荐

  • 将 Java 代码移植到 ObjC 时,如何最好地表示已检查的异常?

    我正在致力于将 Java 代码库移植到 Cocoa Objective C 以在桌面 Mac OS X 上使用 Java 代码有lots and lots带有检查异常的方法 例如 double asNumber throws FooExce
  • 使用 RVM 在 Ubuntu 上安装 Rails Path

    我是一个运行 Ubuntu 10 04 并尝试安装 Rails 的 Linux 菜鸟 我首先安装了ruby 然后安装了RVM 然后下载并安装了rubygems 然后安装了rails Rails 似乎只有在命令前面有 sudo 时才会响应 如
  • 如何将列表视图中行的值传递给按钮

    我创建了一个自定义listview using SimpleAdapter and in 列表视图的每一行我都放了一个按钮有单一 ID 我想要得到position每行传递按钮 但我每行都有一个按钮 id 我想要当我点击按钮它找到行的位置并开
  • 找到最大的素数因子?

    我需要找到 13195 的质因数是 5 7 13 和 29 最大的是377 数字 600851475143 的最大质因数是多少 include
  • HTTP 错误 500.31 - ANCM 无法在 IIS 中找到本机依赖项

    我尝试运行一个Blazor应用 Web Server runs NET Core 3 0 Web Client runs NET Standard 2 0 Web Shared runs NET Standard 2 0 发布并上传应用程序
  • 在与表单相同的模态窗口中加载 php 成功消息

    您好 我正在尝试让我的 php 表单成功 或错误 消息加载到表单实际所在的模态窗口中 我想只在模态中打开表单 而不必以任何原因切换页面 我一直在搜索 S O 但找不到类似的东西 也许我没有问正确的问题 我不知道 我的代码目前如下所示 编辑
  • 抽象 CRUD 控制器是个好主意吗?

    我们正在使用 ASP NET MVC 开发一个相当大的应用程序 一开始我们发现拥有一个具有常见 CRUD 操作 新建 保存 删除 以及默认列表操作的抽象基本控制器可能很有用 在我们的例子中 我们有 20 多个实体通过这种控制器进行管理 这有
  • HTML 代码检查 PhpStorm 中分成多个文件的块

    有没有办法告诉 PhpStorm 仅评估 header php 和 footer php 就像浏览器在运行 index php 时所做的那样 考虑一个包含 4 个文件的项目 index php 服务器端内容 业务逻辑 header php
  • Android:如何检测用户何时停止对着麦克风说话

    我有一个 Android 应用程序 在应用程序启动时开始从麦克风录音 在我当前的版本中 用户必须按 停止 按钮才能停止录制 如何检测用户已停止说话并使用它来触发录音机停止 类似于 Android 中语音识别功能的实现 用户停止说话 然后语音
  • 使用类似“标签”的单元格设置集合视图

    我一直在与客户合作UICollectionViewFlowLayout调整细胞之间的空间 这样我就可以在我的细胞中获得良好的流动collectionView 但使用我当前的代码 我无法弄清楚如何在不 破坏 行数的情况下调整单元格大小 这使得
  • Haskell 中模拟对象的身份

    用面向对象的语言编写模拟时 每个对象都有一个标识 即一种将其与模拟中的其他对象区分开来的方法 即使其他对象具有完全相同的属性 一个对象无论随着时间的推移发生了多大的变化 都会保留其身份 这是因为每个对象在内存中都有唯一的位置 我们可以用指针
  • 在 nginx 重写中发送额外的标头

    现在 我正在将我的应用程序的域从app example com to app newexample com使用以下内容nginx config server server name app example com location app
  • Excel 单元格值作为字符串不会存储为字符串

    我无法在此处获取此代码来获取单元格内容并将其存储为字符串 我得到一个双倍 54 6666666667代替N03 DM 示例单元格内容 如果我使用Cstr Sheet1 Cells i 5 Value 我仍然得到相同的结果 任何帮助 将不胜感
  • Jquery-nice-select 插件无法正常工作

    我正在使用 Jquery nice select 插件 http hernansartorio com jquery nice select http hernansartorio com jquery nice select 我有两个选择
  • 具有非常大的数字的十六进制到 int C#

    我有一个 256 个字符长的字符串 其中包含一个十六进制值 EC851A69B8ACD843164E10CFF70CF9E86DC2FEE3CF6F374B43C854E3342A2F1AC3E30C741CC41E679DF6D07CE6
  • 浏览器使用什么启发式方法来缓存未明确设置为可缓存的资源?

    13 2 2 启发式到期 由于源服务器并不总是提供明确的过期时间 因此 HTTP 缓存通常会分配启发式过期时间 并采用使用其他标头值 例如上次修改时间 的算法来估计合理的过期时间 HTTP 1 1 规范没有提供具体的算法 但确实对其结果施加
  • 如何在UITextView iPhone应用程序中控制复制、粘贴、全选、定义?

    我正在使用 UITextView 在 iPhone 应用程序中工作 我想要允许用户只能复制消息和粘贴消息 But i 不想显示全选 选择 定义等 我按照下面的代码来控制选项 但是 所有选项都显示在 UITextView 单击中 BOOL c
  • Excel-VBA。移动公式而不复制它们

    我从我的宏中获取了以下代码 该代码运行良好 Cells curRow M Copy Range N curRow R curRow PasteSpecial Paste xlPasteFormulas 我想问一下有没有办法可以移动公式而不需
  • 两种方式将 wpf datagrid 绑定到数据库

    HI all 我想以两种方式绑定 WPF 数据网格 我尝试过以下 XAML
  • 为什么 UITextField.text 是可选的?

    它开始时是一个空字符串而不是 nil 即使它被显式设置为 nil 它仍然是一个空字符串 我不明白 也许是为了通过分配 nil 来轻松清除 用它编写代码很笨拙 var textField UITextField print textField