问题标签 [keypaths]

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 投票
2 回答
584 浏览

swift - map(keyPath) 其中 keyPath 是一个变量

效果很好。但以下代码无法编译:

无法将类型 'WritableKeyPath<(Int, Int), Int>' 的值转换为预期的参数类型 '((Int, Int)) throws -> T'。
无法推断通用参数“T”。

0 投票
1 回答
90 浏览

swift - 将观察者添加到 AVPlayer 会导致崩溃,控制台中没有打印输出

我正在尝试快速向我的 AVPlayer 添加一个观察者,允许在视频开始播放时读取以控制我的播放器上的其他功能。当我运行以下代码时:

我的应用程序崩溃,控制台中没有任何解释。我发现导致它的代码行是:

但我不确定它为什么会崩溃。关于可能导致这种情况的任何想法?

0 投票
1 回答
131 浏览

swift - Swift Keypath 泛型和子类化

我正在研究一个类,其中超类及其子类具有不同的属性,但所有相同的类型都需要在分配之前进行相同的处理。我想出了一个非常人为和简化的示例,说明我正在尝试对关键路径进行操作,可能使用泛型,包括非最佳但有效的变体。

现在,我知道为什么第一个不起作用(关键路径类型由 上可用的属性定义OriginalClass),但我不确定为什么最后一个不起作用。当然,这不如有人知道如何做到这一点重要

0 投票
1 回答
129 浏览

swift - 获取对象的所有 KeyPaths

Swift 5 中有没有办法遍历所有键路径?我知道Mirror会给你键的字符串表示,但我不能使用setValue,因为我的对象不是继承自NSObject并且几个值不@objc兼容。我正在尝试执行以下操作(伪编码):

这里的最终目标是首先在现有对象中创建一个浅拷贝,并可能将其扩展为包含基于值类型的深层拷贝。

0 投票
1 回答
152 浏览

swift - 存储异构键路径数组

我有一个类似的对象:

我正在尝试存储一个异构的更新数组,以便以后可以使用它们来设置值。像这样的东西。

但是,这当然在 getUpdates() 中读取Cannot convert value of type 'WritableKeyPath<MyObject, String?>' to expected argument type 'WritableKeyPath<MyObject, Any>'.

需要有一组异构的可写键路径,然后我可以使用它们来设置值。鉴于泛型通常如何工作,我不明白为什么 String 不能等同于 Any 泛型,因为该类型是向下转换的。

0 投票
2 回答
85 浏览

swift - 在 Swift 中使用字符串路径访问结构变量

我正在为 Swift 中的 JSON 表单构建一个自定义渲染器,以与用于我们基于 Web 的应用程序的 JSON 表单架构集成。如果你不熟悉,两个 JSON 文件用于生成 UI 表单组件并链接到后端。下面是 JSON Schema 和 JSON UI Schema 的示例,以及我从 JSON Schema 生成的 Person 结构。

范围值提供了一个字符串,可用于链接到后端人员数据的变量,但我很难弄清楚如何以可扩展的方式这样做。后端将是 Core Data 和(可能)SQLite(带有 SQLite.swift)的组合,但显示的结构将是从中提取数据的对象。我希望 Keypaths 会是这样,但我无法弄清楚如何直接从字符串生成 Keypath。我想我可以使用参考字典(字符串:Keypath),但这可能会与我们可能使用的后端失控。

在你问“为什么要这样做?”之前 答案是那是黄铜交给我的任务,所以……我必须!

JSON UI 架构:

JSON模式:

人员结构:

0 投票
0 回答
65 浏览

json - Swift value(forKeyPath keyPath: String) not available at Linux

My main goal is to extract from a JSON file a value or an array of values identified by a keyPath. On macOS I have created the following method for this.

For example, this allows me to extract an array of strings with the keyPath fields.components.@distinctUnionOfObjects.name by doing something like

Unfortunately the function func value(forKeyPath keyPath: String) -> Any? is not available under Linux and I am now looking for an alternative.

0 投票
0 回答
163 浏览

swift - 如何以编程方式从 Swift 结构中获取所有可写键路径?

我现在正在尝试将 `struct1 转换为 Realm 对象。领域对象具有与原始结构相同的键路径。因此,如果我可以从原始结构中获取所有可写键路径,则可以使用通用方法进行转换。

刚刚找到上面的代码片段,但它返回KeyPath(不是WritableKeyPath)。在这种情况下,我尝试进行类型转换,但它返回nil. 可能镜像功能有问题。有什么解决办法吗?

0 投票
2 回答
82 浏览

swift - 如何定义一个空的、“未初始化的”键路径并在以后设置?

我做了一个程序来计算视图的总宽度/高度(有时我想要总宽度,有时我想要总高度)。唯一的问题是:如果我正在计算宽度,我想10在总数中添加一个额外的。这是我当前的代码:

这工作正常。但是,我if calculatingWidth {在两个地方重复,以确定:

  1. 是否添加额外的padding 10 padding
  2. 是否使用view.frame.widthview.frame.height作为长度

第二个 if 语句是不必要的,因为它在每次迭代中总是计算相同的东西。

所以,我认为键路径是要走的路——我可以存储对第一个 if 语句.width.height来自第一个 if 语句的引用。但是,如何在不“初始化”的情况下定义键路径?我想做这样的事情:

但是,这给了我Reference to generic type 'KeyPath' requires arguments in <...>. 我怎样才能解决这个问题?

0 投票
1 回答
44 浏览

arrays - 如何使用关键路径遍历 Ruby 中的哈希映射?

所以我有一个嵌套哈希,如下所示:

要访问不同级别的值,您可以使用多种方法,如下所示:

但也许你需要像这样的一种方法:

这显然不是理想的,也不能扩展。如果我可以传递任意长度的数组以达到任意级别,那就太好了。有没有一种方法可以做到这一点?

(对于上下文:我要解决的问题是我需要将键路径作为参数并使用它从多个不同的数据结构中获取数据。)