问题标签 [didset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
220085 浏览

swift - Swift 中 willSet 和 didSet 的作用是什么?

Swift 的属性声明语法与 C# 非常相似:

但是,它也有willSetdidSet动作。它们分别在调用 setter 之前和之后调用。考虑到您可以在 setter 中使用相同的代码,他们的目的是什么?

0 投票
1 回答
1466 浏览

swift - 在 Swift 中动态设置 willSet 和 didSet

willSet我看到了使用&didSet来替换我在 Objective-C 中使用的部分 KVO 类型代码的潜力。Objective-C 的好处之一是它的活力,特别是在运行时创建行为的能力。为了让willSet&didSet对我有用,我需要能够动态分配他们的行为。是否可以设置它们的“内容”或它们动态体现的行为?一个用例是将模型的属性绑定到视图。在伪代码中:

0 投票
9 回答
56149 浏览

ios - 是否可以允许在 Swift 初始化期间调用 didSet?

问题

苹果的文档指定:

首次初始化属性时不会调用 willSet 和 didSet 观察者。仅当属性的值在初始化上下文之外设置时才调用它们。

是否可以在初始化期间强制调用这些?

为什么?

假设我有这门课

我创建了 method doStuff,以使处理调用更简洁,但我宁愿只处理didSet函数中的属性。有没有办法在初始化期间强制调用它?

更新

我决定只删除我的类的便利初始化程序,并强制您在初始化后设置属性。这让我知道didSet将永远被调用。我还没有决定这是否总体上更好,但它很适合我的情况。

0 投票
0 回答
1401 浏览

class - 结构和类 didSet 过程的行为不同

我已将此作为雷达报告提交,但我不确定他们会做什么。

我拥有的是一个结构,该结构由类实例实例化和聚合。

由于 struct 是一个对象,因此它具有 setter 和 getter,以及 set/get 观察者。

我正在使用这些观察者重新索引结构实例的数组。

交易是,一个结构有一个“可见”标志(在我的实现中)。如果该标志被关闭(设置为 false),则容器类需要重新索引其所有结构,以从索引中删除现在不可见(或现在可见)的实例。

所以,最好的方法是,当我实例化一个结构实例时,我将一个对容器实例的引用传递给它,并设置一个 didSet { myContainer.reIndex() } 处理程序。

问题是结构和类的行为似乎不同。我怀疑这是一个价值/参考问题。

在一个类中,实例的外部值是在调用 didSet 时设置的。这意味着我可以调用一个外部对象来重新索引,它会看到新的值。

在结构中,直到执行 didSet 之后才出现这种情况。

我将在 RADAR 报告中包含我提交的游乐场。

我的问题是:你认为结构应该有 setter/getter 观察者吗?他们应该有setter/getter吗?

我确实有一个解决方法。我在更改值后调用索引器。它只是没有那么优雅。

操场(在下面的代码中,查看在 didSet 处理程序期间发出的不同值):

0 投票
4 回答
10336 浏览

swift - Swift:如何在不调用其 didSet 函数的情况下更改属性的值

如何在 Swift 中设置属性的值,而不didSet()在初始化上下文之外调用它的函数?noside()下面的代码是在类的功能中实现这一目标的失败实验

在具有自动合成属性的 Objective-C 中执行此操作非常简单:

有副作用(如果存在于 setter 中):

无副作用:

0 投票
5 回答
49555 浏览

swift - 属性观察者 willSet 和 didSet;属性获取器和设置器

在属性中使用 this 时willSet-didSetget-有什么区别?set

从我的角度来看,它们都可以为属性设置值。什么时候,为什么,我应该使用willSet- didSet,什么时候get- set

我知道对于willSetand didSet,结构如下所示:

0 投票
1 回答
3045 浏览

arrays - 为什么不能在属性观察者 didSet 中更改 Swift 数组?

看来 Swift 的 Array 不会通过 didSet,为什么?

0 投票
1 回答
1029 浏览

xcode - Swift didSet 抛出错误

我得到以下代码:

显示的错误是:

计算属性必须具有显式类型

我不明白这个错误。我是初学者。有什么帮助吗?

编辑:更多代码

声明很简单,其余代码在 tableView 上,但没有给出任何错误,只是字符串

编辑 2:更多代码

这是配置视图。也许它有帮助。

Xcode 错误视图

0 投票
1 回答
404 浏览

swift - Why is this didSet property not printing any output in Swift?

I have correctly set up a UIPageViewController.

I would like to check the itemIndex of each views and display content accordingly. Here's what the code looks like:

What I tried

  1. I run the app
  2. Console Output: "Character is John!"
  3. I swipe forward (to the right)
  4. Console Output: "Character is Lela!"
  5. I swipe back (to the left)
  6. There is no output!
  7. I swipe forward
  8. There is no output! Again!

What is this due to? Here's the full code:

0 投票
3 回答
7987 浏览

swift - Swift:覆盖 didSet 会导致递归

当重写属性的 didSet 观察者导致递归时,为什么?

如果我QuadInt更新

所以我猜这个电话是这样的:

这或多或少有点像在黑暗中拍摄。是否有任何文件说明属性更新时会发生什么?