问题标签 [property-observer]

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 投票
3 回答
302 浏览

swift - 结构不在新对象上调用属性观察者

在这段代码中,我想在property observers创建新对象时调用。我如何实现这一目标?

这是我到目前为止所拥有的:

0 投票
2 回答
926 浏览

swift - swift 协议的默认变量逻辑

我有一个协议

和扩展:

  • value设置为 时true,我想foo()被调用
  • value设置为 时false,我想bar()被调用

但是,我不想didSet{ }在每个符合的类中冗余地实现逻辑Example

但是,如果我尝试didSet{ }在扩展中添加逻辑,Xcode 会说“扩展不能包含存储的属性”。

添加默认属性观察逻辑而不必复制/粘贴到每个符合的类中的最佳实践是什么?

目标:

我希望任何子类都UIView符合我的协议Expandable。我的协议的要求是isExpanded: Boolexpand()collapse。我想isExpanded = true打电话expand()isExpanded = false打电话collapse()(很像设置的行为isHidden)。但是对于 UIView 的每个子类,我不想重写任何逻辑。我只想让课程符合Expandable,然后直接进入设置isExpanded

0 投票
3 回答
787 浏览

arrays - 为什么我不能在其 willSet 事件中从数组中删除元素?

逻辑是在数组具有指定数量的元素时清除它。我可以将检查放在 Array 之外,但我试图在 Array 的 willSet 事件中查看是否执行此操作。结果是 Array 中的元素保持静止。

这是代码

MyArr 预计只有一个元素,而实际结果是四个。

0 投票
1 回答
57 浏览

swift - 物业观察员 Swift 4

***更新**** 我遇到的问题是当我使用 func listFoodItems() 更新的属性 itemQuantity 不会改变。我想知道如何更新集合,所以当我调用 func listFoodItems() 时,它会显示值更改。

删除是可以的,当函数运行时,集合会删除对象。问题一定是因为我使用 for item in foodItems 来显示,我需要在执行此操作之前使用更新的值重新加载它?

感谢您提供任何帮助。

0 投票
1 回答
564 浏览

swift - 我可以在 deinit 中使用 didSet 吗?

我在我的类中添加了一个 Timer 变量,并使用它的 didSet 观察者使旧值无效

我认为这足以在类被取消初始化时使计时器无效,但看起来没有调用 didSet。这是为什么?观察者在反初始化期间不工作吗?

0 投票
1 回答
350 浏览

ios - 在 Swift 中创建属性观察者

Property Observers当变量值发生变化时,我一直在使用它来操作 UI 和对象。didSet考虑到这一点,我想知道是否可以willSet为我自己的对象创建我自己的 Property Observers。我正在寻找的是能够写出这样的东西:

如您所知didSet并且willSet不跟踪例如将元素添加到数组但跟踪整个数组值的变化。我期待着使用属性观察器来扩展它。我查看了有关闭包和属性的文档,但找不到任何提示。

我的问题是,我如何创建属性观察者?我以上面的一个用例为例,但我的目标是创建自己的观察者。

0 投票
0 回答
65 浏览

swift - 在 Swift 中观察超类的实例变量

假设我已经继承了一个 Cocoa 类或 Foundation 类。在我的情况下CALayer

现在我想为类的属性添加一个didSet观察者。那可能吗?positionCALayer

0 投票
1 回答
1196 浏览

swift - deinit 末尾的 Defer 语句会产生警告

Xcode 10.2 (Swift 5)起,作用域defer末尾的语句产生:deinit

作用域结束前的“defer”语句总是立即执行;替换为“do”语句以消除此警告

让我们看一下这个例子:

  • 当然,可以通过将代码从观察者移动到方法并显式调用它来消除此警告,但是……</li>

这个警告有什么意义?defer- 将声明放在 中是否合理deinit(例如,能够触发属性的观察者)

0 投票
3 回答
117 浏览

swift - Swift 在 2 bool didset 调用后调用一个方法

我有 2 个带有 didset 方法的布尔值。在两个 didset 内部,它调用了相同的方法。所以我想在调用了 2 个 bool 集合之后调用一个方法

0 投票
0 回答
73 浏览

swift - 在文本中设置后未调用 UILabel didSet 属性文本:didSet

在 UILabel 的子类中,我在文本上添加格式并按以下方式设置属性文本

我也有一些代码,attributedText - didSet:但在设置文本后不会调用它。我不知道为什么。有什么遗漏吗?