问题标签 [key-value-coding]
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.
objective-c - 使用 KVO 更新由 NSPredicate 过滤的 NSTableView
我的 UI 没有在我期望的时候更新。
该应用程序使用类似于 iTunes 的视图显示“项目”——左侧的源列表允许您在右侧过滤列表 (NSTableView)。我的过滤器在检查任何简单字段(如名称、字符串)时会正确更新,但不适用于数组(如标签)。
我正在从我的一个对象中删除一个标签(从一个名为“tags”的 NSMutableArray 字段中),我希望它从列表中消失,因为它不再匹配绑定到我的表的 NSArrayController 的谓词。
项目浏览器.mm:
项目.mm:
我也试过这个,但结果是一样的:
界面生成器设置:
- ProjectBrowser 对象是 XIB 的文件所有者
- NSArrayController(项目控制器)的内容数组绑定到“文件所有者”.projects
- 项目控制器的过滤谓词绑定到“文件的所有者”.filter
- NSTableView 的列绑定到“项目控制器”.name
objective-c - 为瞬态核心数据属性设置“对多”关系值依赖项
我有一个相对复杂的核心数据关系结构,我试图弄清楚如何在各种多对多关系之间建立价值依赖关系(或观察)。让我从一些基本信息开始。我有一个有学生、作业和成绩的教室(学生 X 作业)。为简单起见,我们实际上不必过多关注作业。
每个ScoreObj与StudentObj和AssignmentObj具有一对一的关系。
- ScoreObj 具有数字等级、turnInDate 和注释的真实属性。
AssignmentObj.scores 是该作业的一组分数对象(N = 所有学生)。
- AssignmentObj 具有 name、dueDate、curveFunction、gradeWeight 和 maxPoints 的真实属性。
StudentObj.scores 是该学生的分数对象集(N = 所有作业)。
- StudentObj 还具有真实属性,例如姓名、学生 ID、电子邮件等。
- StudentObj 有一个名为gradeTotal的瞬态(计算的,未存储的)属性。
最后一项,gradeTotal,是真正的泡菜。它使用学生所有作业的分数 (ScoreObj)、相关的作业gradeWeights、曲线和 maxPoints 以及其他各种东西来计算学生的总学期成绩。
此gradeTotal值与所有学生及其个人作业成绩一起显示在表格列中。确定gradeTotal 的值是一个相对昂贵的操作,特别是对于一个大类,因此我只想在必要时运行它。为简单起见,我没有将gradeTotal 值存储在核心数据模型中。我不介意将它缓存在某个地方,但我有一段时间要确定在哪里以及如何最好地更新该缓存。
每当影响他们的总成绩的任何值发生变化时,我都需要为每个学生运行该计算。如果这是一个简单的一对一关系,我知道我可以使用keyPathsForValuesAffectingGradeTotal之类的东西......但它更像是一个多对一的关系。有谁知道优雅(并且 KVC 正确)的解决方案?我想我可以撕开所有这些分数和作业对象,并告诉他们将他们的学生注册为观察员。但这似乎是一种生硬的方法。
objective-c - 如何在手动绑定中更新窗口控件(NSTextField、NSCheckbox 等)
我正在开发一个应用程序,我需要将所有 NSObject 子类属性存储到 plist 文件中,然后允许用户存储并恢复它。我们称之为配置文件,它可以恢复我应用程序中窗口上所有控件/视图的保存状态。
我已经完成了存储/恢复部分,但问题是当我手动更新类属性时,它没有更新控件状态,如复选框和其他与类属性绑定的。
如果 KVC/KVO 以编程方式更新,请告诉我如何更新控件状态。
提前致谢
cocoa - 如何将可可绑定编写为代码而不是在 Interface Builder 中?
在我的模型中,我得到了一个NSMutableArray
跟踪不断变化的元素数量的模型。在我看来,我得到了一个NSTextField
显示元素数量的。
视图从 nib 文件中取消归档并分配/初始化模型。因此,它知道模型和包含的数组。
我建立了如下连接。在文本字段的Interface Builder中,我添加了一个Cocoa 绑定“路径”,如下所示myModell.myArray.@count
:通过这个我可以访问该count
属性(这是必须的,因为数组本身不会改变)。
绑定基于键值合规性,我在模型中建立了它,以便可以访问数组。但关键值合规性不是问题的一部分。
我的问题:如何将绑定放入源代码而不将其写入Interface Builder?
php - 目标 PHP 和键值编码
在我的代码的某些部分,我需要这样的东西:
换句话说,我需要一种 KVC - 意味着通过运行时生成的字段名称获取对象字段。我只需要扩展一些现有系统并保持字段命名约定,所以不要建议我更改字段名称。
我知道这样的事情适用于数组,当你可以通过以下方式轻松做到这一点时:
所以我可以动态地为数组生成密钥。但是如何为对象做到这一点?请帮助我,因为谷歌为我提供了数组等的大量结果......谢谢
cocoa - 你知道网上有什么 Key-Value-Coding 和 Key-Value-Observing 会话视频吗?
我知道 Apple 并不是唯一的资源,许多人在会议和演示文稿中制作出色的视频。
如果有人知道关于 KVC 或 KVO 主题的精彩视频或播客,请告诉我。我会很高兴的!
编辑:更改了标题,因此更清楚这确实与编程有关。KVO / KVC / MVC !=肯德基
iphone - 此 KVC 验证方法中的类型是否重要?
例如,在文档中,一个 KVC 风格的验证方法是这样实现的:
他们使用 id* 作为 ioValue 的类型。由于这不是方法签名的一部分,我想知道这样做是否会伤害:
这对 KVC 还好吗?
objective-c - KVC 与 NSArrays 的 NSArrays
我有一个要在其上使用 KVC 的数组数组(至少我认为我这样做了——这似乎是最直接的方法),但我不知道如何为单个数组索引创建键路径。我的数组看起来像这样
NSArray [
NSArray[0, 1, 2, 3], NSArray[4, 5, 6, 7], NSArray[8, 9, 10, 11]
]
我想要做的是获取内部数组中索引 3 的最大值。看起来像 [outerArray valueForKey:@"@max.[3]"] 这样的东西会起作用,但我无法弄清楚语法,而且我的谷歌搜索也没有结果。我正在尝试做的事情是否可能,或者我应该编写一个手动执行此操作的方法?
iphone - UIScrollView 不符合键视图的键值编码
所以按照这个 SO question Here,我创建了两组新文件:
在JCScrollViewController.xib
我只有一个滚动视图,scrollView
.m 文件的出口连接到它,视图出口连接到视图。JCScrollViewController.m
符合UIScrollViewDelegate
. _
在我的应用程序委托中,我这样做:
在JCScrollViewController.m
我这样做-viewDidLoad
:
当我启动应用程序时,我收到此错误:
什么会导致这个?
谢谢
cocoa - Cocoa Key-Value Coding 和反向关系属性
我试图弄清楚 KVC 机制在处理相互之间的反向关系的关系属性时是否提供任何帮助。我将使用人为的标准部门/员工示例。
有了这个(以及省略的 KVC 收集方法),KVC 为管理双向关系提供了什么样的帮助?我现在只是在概念阶段。我知道使用 Core Data 我可以设置显式反向关系,因此当我使用[myDepartment insertObject:newEmployee inEmployeesAtIndex:lastIndex];
, 然后newEmployee.department
自动设置为myDepartment
,但是我可以仅使用 KVC 和运行时来实现这一点,还是我需要 Core Data?
提前感谢您的帮助。
编辑有点不相关但也很重要,在我的代码中,我将 Employee 的属性设置为 Department,retain
但我想知道这是否会导致保留周期?