问题标签 [key-value-observing]
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.
iphone - 如何 Key-Value-Observe 一个 CALayer 的旋转?
我可以像这样访问值:
但由于某种原因,如果我尝试 KV 观察该密钥路径,则会出现编译器错误。首先,这就是我尝试这样做的方式:
编译器告诉我:
*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[addObserver:forKeyPath:@"rotation.z" options:0x0 context:0x528890] 被发送到不符合 KVC 的“旋转”对象财产。'
我不明白的是,为什么我可以通过 KVC 密钥路径访问该 z 值,但不能向其添加观察者。这有意义吗?
我还能如何观察该矩阵的 z 值?我不关心矩阵的其他值。只有 z 旋转。还有其他方法可以访问和观察它吗?
iphone - KVO 摇滚。现在我如何异步使用它?
我在 KVO 上出售,但如果以明显的方式使用它是同步的。我想在我快速连续触发许多 KVO 消息的情况下使用它,这导致我的应用程序在处理 KVO 消息时停止运行。有人可以建议一种方法 - 也许使用NSOperation
或NSThread
- 可以在这里工作吗?
我的目标是尽可能保留 KVO 的解耦、灵活性。
uiview - 对 UIView 的 ivars 进行键值编码
我有兴趣在我的 UIView 更改时运行一些方法,无论是通过帧更改还是仿射变换。我最好的想法是通过观察以下值的变化来做到这一点:
myView.frame
和 myView.transform
。
但是,UIViews 的视图部分不是 Key-Value 投诉。幸运的是视图的模型部分,CALayer 是。所以我设置如下:
在 viewDidLoad: 视图的一部分。我对“框架”键做了同样的事情。但是当视图改变时,无论是通过在它的超级视图中移动视图,还是通过仿射变换,方法:
永远不会被调用。是什么赋予了?有没有更好的方法来观察 UIViews 框架的变化和变换?
cocoa - KVC/KVO 和绑定:为什么我只收到一个更改通知?
我看到 Cocoa 的 KVC/KVO 和绑定有一些古怪的行为。我有一个NSArrayController
对象,它的“内容”绑定到NSMutableArray
,并且我有一个控制器注册arrangedObjects
为NSArrayController
. 使用此设置,我希望每次修改阵列时都会收到 KVO 通知。但是,KVO 通知似乎只发送一次;第一次修改数组。
我在 Xcode 中建立了一个全新的“Cocoa Application”项目来说明这个问题。这是我的代码:
BindingTesterAppDelegate.h
BindingTesterAppDelegate.m
这是输出:
如您所见,KVO 通知仅在第一次发送(并且在应用程序退出时再次发送)。为什么会这样?
更新:
感谢orque指出我应该绑定到contentArray
my 的NSArrayController
,而不仅仅是它的content
。只要进行此更改,上面发布的代码就可以工作:
cocoa - 观察 NSTreeController 的绑定 CoreData 实体以进行插入/删除
我正在创建自己的可绑定自定义树视图。为此,我想观察 NSTreeController 以更新其项目的多对关系。NSTreeController 绑定到 CD 托管对象上下文。每个深度级别都有自己的 CD 实体,带有 parent/children/isLeaf 属性。我需要在视图中保持相同的层次结构(以及子项的顺序)。如果插入了某些东西,我将开始观察它的 children 属性。我当然需要知道新插入对象的索引路径。
我想确切地知道插入/删除了什么,所以我可以开始观察它是否插入/删除了它的孩子。据我了解,执行此操作的标准方法是在observeValue:forKey ...中查看“更改” NSDictionary,但更改为NULL。
我知道这是一个长期存在的错误,但有一些好的解决方法吗?我已经看到一些示例的视图保存数组,然后当模型更改时,您比较差异。树视图更复杂。这种方式也会浪费内存和 CPU 周期。我有一种正在测试的解决方法。它只是一种作品,所以我不会描述它。
iphone - 如何观察托管对象上下文
每当我在应用程序的第一个选项卡中更改对象时,更新都会在选项卡 2 中自动更新,因为它使用了 fetchedResultsController。现在我有第三个标签也应该更新自己,但我该怎么做呢?
我在第三个选项卡中只有一个 nsmangedObjectContext 来获取适当的数据。每当此上下文中的对象发生更改时,我如何接收通知?
我也在努力解决如何让我的数据获取更有效的问题,因为选项卡 2 和 3 使用相同的数据集。我目前正在选项卡 3 中进行另一次提取,以获取与选项卡 2 相同的数据。我不知道如何在不干扰 fetchedresultscontroller 的情况下使用来自 tab2 的数据。
有关此主题的信息将不胜感激!
cocoa - 如何将 NSProgressIndicator 绑定到 NSOperation 的属性?
我有一个反映NSOperation
. 我应该如何将 绑定NSProgressIndicator
到NSOperation
的进度属性?
cocoa - KVO - 从存储中检索对象并显示版本的问题
我对 KVO 有疑问,我就是不知道它是什么。
我有一个可用于编辑或创建记录的屏幕。该记录由一个模型对象表示,该对象包含许多 NSString 类型的变量。
该字符串的控制器有一个实例变量来保存当前正在处理的模型。当我打开窗口以创建新记录时,我在托管对象上下文中创建了一个新实体,将新创建的实体分配给该实例变量并显示窗口 - 没有问题。
我在模型对象的某些字段中使用手动通知,因为它继承自 NSManagedObject。
但是当我尝试编辑一条记录时——通过从核心数据中获取它并做同样的事情——我得到了错误:[ addObserver:forKeyPath:options:context:] is not supported。关键路径:用户名
NSLogging 对象显示其类型正确。有什么线索吗?
cocoa-touch - 观察 UISlider 的值 - iPhone KVO
默认情况下,当我观察 UISlider 的值时,它只更新一次,当单击滑块时,不会连续更新,甚至认为这是滑块的设置。有没有办法获得滑块的连续值变化?
objective-c - 帮助键值观察
我需要一些关于 KVO 的帮助,我已经完成了一半。我要做的是在树控制器中的某些内容发生更改时触发一个方法。
所以我正在使用此代码注册为 KVO。
但是当我观察到的关键路径发生变化时,我如何触发一个方法?
一个额外的问题,当我将自己添加为观察者时,我希望关键路径成为我的核心数据模型中的一个属性,我做得对吗?