在更改类中的属性时,有没有办法让 didSet 工作?

2023-11-26

我有一个带有属性观察者的类作为属性。如果我更改该类中的某些内容,是否有办法触发 didSet,如示例所示:

class Foo {
    var items = [1,2,3,4,5]
    var number: Int = 0 {
        didSet {
            items += [number]
        }
    }
}

var test: Foo = Foo() {
    didSet {
        println("I want this to be printed after changing number in test")
    }
}

test.number = 1 // Nothing happens

没有任何反应,因为观察者处于开启状态test,这是一个 Foo 实例。但你变了test.number, not test本身。 Foo 是一个类,而类是一个引用类型,因此它的实例是可变的。

如果您想查看日志消息,请设置test itself到不同的值(例如不同的Foo()).

或者,添加println声明给other didSet,您已经在 Foo 上获得的那个number财产。

或者,将 Foo 设为结构体而不是类;更改结构体属性does替换结构体,因为结构体是值类型,而不是引用类型。

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

在更改类中的属性时,有没有办法让 didSet 工作? 的相关文章

  • 使用prepareForSegue传递数据

    我试图将数据从viewController 1传递到viewController2 我有2个按钮和1个segue 因此有一个segue标识符 这2个按钮 按下时每个按钮应显示 1个标签用于显示标题 1个textView用于显示定义 我很难显
  • CustomNSError 协议有什么作用以及为什么我应该采用它?

    什么是CustomNSError协议的用途以及为什么我应该采用它 Apple提供的文档仅指出 描述错误类型 具体提供域 代码和 用户信息字典 我已经在谷歌上搜索过 但找不到与我的问题相关的任何内容 每种类型都符合Error协议是隐含地桥接的
  • 如何在 Swift 中创建 UIAlertView?

    我一直在努力在 Swift 中创建 UIAlertView 但由于某种原因我无法得到正确的语句 因为我收到此错误 找不到接受提供的 init 重载 论点 我是这样写的 let button2Alert UIAlertView UIAlert
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • iOS WKWebView 处理文件下载

    我面临以下问题 在 Web 界面中 文件下载是通过锚标记触发的 如下所示 a href bla blabla a 虽然 Safari 浏览器可以处理此请求并打开一个对话框来处理文件 但 WKWebView 将此视为普通链接并且不对其执行任何
  • 如何使用 SwiftUI 获取多个屏幕上的键盘高度并移动按钮

    以下代码获取键盘显示时的键盘高度 并将按钮移动键盘高度 在转换源 ContentView 和转换目标 SecibdContentView 处以相同的方式执行此移动 但按钮在转换目标处不移动 如何使按钮在多个屏幕上移动相同 import Sw
  • 如何组合两个 SwiftyJSON 对象

    我有一个 swiftyJSON 对象 例如 location http img http commentCount 0 timestamp 1432460217550 我希望能够向其附加另一个 swiftyJSON 对象 使其看起来像 lo
  • 保存来自 TrueDepth 相机的深度图像

    我正在尝试保存 iPhone X TrueDepth 相机的深度图像 使用AVCam照片滤镜 https developer apple com library content samplecode AVCamPhotoFilter Lis
  • 在 UITableViewController 中重新排序行后 UI 更新不正确

    因此 我对表中的行重新排序 用户界面最终结果不正确 场景如下 表内容原文 a b c d e 如果我移动第 0 行 当前a 到第 4 行 当前e 我看到的最终结果是 c d e a a 一些背景 该表正在读取 Realm 对象的列表 我确认
  • 领域:结果 和列表

    是否可以转换Results
  • 具有动态警报正文的快速本地通知

    所以我可以创建一个像这样的本地通知 var localNotification UILocalNotification localNotification fireDate NSDate timeIntervalSinceNow 7 loc
  • 删除派生数据文件夹后,Xcode 不断重新创建派生数据文件夹

    自动完成功能在 Xcode 6 中不再起作用 我四处搜索 发现删除派生数据文件夹可以解决此问题 每次我删除它时 它都会回来 然后就不会再自动完成了 有什么建议么 Thanks 没关系 我解决了这个问题 我没有声明需要在类内的方法中使用的变量
  • 对成员“buildBlock()”的引用不明确

    我一直在尝试使用 Swift UI 为 iOS 13 制作一个应用程序 但我不断收到这个奇怪的错误 对成员 buildBlock 的引用不明确 无论我做什么 错误都不会消失 我尝试一次对代码段进行注释 以查看哪一部分可能导致了问题 但唯一有
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • 在 swift 中将简单字符串转换为 JSON 字符串

    我知道有一个同标题的问题here https stackoverflow com questions 30825755 convert string to json string in swift 但在那个问题中 他试图将字典转换为 JSO
  • Swift Codable 将空 json 解码为 nil 或空对象

    这是我的代码 class LoginUserResponse Codable var result String var data LoginUserResponseData var mess String public class Log
  • 如何将字符串日期转换为 NSDate?

    我想转换字符串 2014 07 15 06 55 14 198000 00 00 to an NSDate在斯威夫特 尝试这个 let dateFormatter NSDateFormatter dateFormatter dateForm
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • SKNode 上的 runAction 未完成

    我使用 NSOperation 子类来获取串行执行SKAction正如这个问题中所描述的 如何在 Swift 中子类化 NSOperation 以将 SKAction 对象排队以进行串行执行 https stackoverflow com

随机推荐

  • UICollectionView 无法滚动查看整个最后一行

    我有一个 UICollectionView 其大小 768x1024顶部有一个导航栏 我的定制UICollectionViewCells有尺寸的200x200 问题是 当我继续添加单元格并到达底行时 我只能看到部分200x200细胞 在它弹
  • Twig 忘记了数组键

    我在 Symfony2 中遇到了一个关于 twig 的奇怪问题 我正在使用以下数组 days gt Array 1 gt Array money gt 9 2 gt Array money gt 21 3 gt Array money gt
  • 如何枚举对象中的所有属性并获取它们的值?

    我想枚举所有属性 私有 受保护 公共等 我希望使用内置设施而不使用任何第三方代码 Serg 的答案很好 但最好通过跳过某些类型来避免异常 uses Rtti TypInfo procedure TForm4 GetObjectPropert
  • 将由返回字符分隔的字符串转换为 List 的最佳方法是什么?

    我需要经常转换 字符串块 包含返回字符的字符串 例如来自文件或文本框的字符串 into List
  • 使用jquery将一系列元素包装在两个h2标签之间

    我目前有一个动态创建的页面 如下所示 h2 a Heading h2 p a paragraph p p a paragraph p p a paragraph p p a paragraph p p a paragraph p h2 a
  • 如何修复 Laravel 5.1 - 404 Not Found?

    我第一次尝试使用 Laravel 5 1 我能够安装它并且https sub example com laravel public 正在显示应该显示的内容 但是 我创建的视图给出了 404 错误 找不到页面 这是我到目前为止所做的 我创建了
  • 如何将焦点设置到 UserControl(使其可选择)?

    我需要将焦点放在UserControl它本身 而不是它的孩子 否则我无法实现从缓冲区的插入 环境Focusable True没有帮助 Google 和 SO 仅告诉您如何将焦点设置到 UserControl 子级 我的控件包含 工具栏上有多
  • 通过 xslt 重新排列 xml 节点(包括子节点)

    我有一个 xml 文档 现在我想将其转换为另一个内容相同但元素顺序不同的 xml 文档 原始的xml文档如下
  • 装饰一个类来监控属性变化

    我希望有一些类 只要订户的属性之一发生更改 就会自动向订户发送通知 所以如果我写这段代码 ChangeMonitor class ChangingClass object def init self x self x x changer C
  • 谐波序列递推

    我真的掌握了递归的窍门 或者我认为是这样 但这个问题让我绊倒 我试图返回 1 1 2 1 3 1 n 但无论我尝试什么 该方法都会返回 1 0 我一生都无法弄清楚出了什么问题 public static double harmonic in
  • 使用navigateUpFromSameTask()从活动返回

    我有两个活动 A 和 B 当活动 A 首次启动时 它会访问Intent传递给它 因为Bundle is null 因为它应该是第一次通过 并相应地显示信息 CustInfo m custInfo protected void onCreat
  • 是否必须位于 内

    是否有一个表行 tr 必须位于表体中 tbody 如果表有表体 或者它可以存在于表体之外吗 table tr td td tr tbody tr td td td td tr tbody tr td td tr tbody tr td td
  • 通过iOS6新社交框架查询Facebook用户数据

    我正在尝试使用 iOS 6 的新 Facebook 集成 API 查询有关用户的信息 这是我正在使用的代码 与他们在 WWDC 上演示的代码基本相同 NSDictionary parameters NSURL url NSURL URLWi
  • 如何使 Spring Security 应用程序在代理后面运行?

    我们有一个基于 Java 1 6 和 Spring 3 0 3 构建的应用程序 该应用程序使用 Spring Security 3 0 5 并使用 Spring Web 和 RestEasy 2 1 0 实现 REST API 我需要将此应
  • 为什么 PHP 中的函数和方法不区分大小写?

    PHP 中的函数和方法不区分大小写 如以下示例所示 function ag echo 2 Ag class test function clMe echo hi instance new test instance gt clme 但变量的
  • 确定.Net Core控制台应用程序是否以用户交互模式运行

    是否可以确定 Net Core 控制台应用程序是否以用户交互模式运行 在 Net 的早期版本中可以进行测试Environment UserInteractive查看用户是否有权访问该应用程序 这在 Net core中似乎不存在 NET Co
  • 获取正在运行或挂起的 PHP 脚本的堆栈跟踪

    我有一个每晚从 cron 作业运行的脚本 最近 脚本进入几分钟后就开始完全冻结 我不明白为什么 如果这是 Java 我可以简单地运行kill 3 PID它会在标准输出中打印线程转储 PHP 中是否有任何等效项 我可以在其中获取正在运行的 P
  • Java路径..jvm.cfg错误

    谁能告诉我为什么当我尝试运行 Java 程序时出现以下错误 程序编译成功 但无法运行 我已经设置了Java的路径 C JavaServ gt javac hello1 java C JavaServ gt java hello1 Error
  • mysql 存储过程与 INTO OUTFILE

    我有一个 mysql 存储过程 我想做两件事 1 查询一个表 并将结果作为正常结果集返回 2 迭代结果集并从过程本身创建一个格式化文本文件 我查看了 INTO OUTFILE 但似乎 INTO OUTFILE 将原始结果写入指定的文件 而且
  • 在更改类中的属性时,有没有办法让 didSet 工作?

    我有一个带有属性观察者的类作为属性 如果我更改该类中的某些内容 是否有办法触发 didSet 如示例所示 class Foo var items 1 2 3 4 5 var number Int 0 didSet items number