问题标签 [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.
swift - 通过 KeyPath 获取值
我尝试通过KeyPath<Object, Value>
这样的方式获得价值
我需要比较它value
,nil
但我在控制台中得到非常奇怪的结果,我的检查总是有notNil
结果
例如
控制台输出:
测试 Swift.ImplicitlyUnwrappedOptional
零?=假
不是零?= 真
例如
控制台输出:
无 Swift.Optional
零?= 假 // ???
不是零?= 真
我如何将我value
的与 nil 进行比较?
swift - 尝试在 Swift 中使用 PartialKeyPath 修改类属性
我对 swift 还很陌生(几个月后),所以如果问题是微不足道的或重复的,请原谅。
我正在尝试构建一个包含属性以及元组数组(带有3个参数)的类,在其中我存储类中属性的密钥路径以及我想用来初始化/修改的一些其他参数类的属性
下面的代码是我想要实现的一个示例。真正的代码要复杂得多,并且在类中使用了大约一百个属性。
这种方法的原因是我必须在 NSTableView 中显示所有属性,以便我可以通过参数上的循环而不是当时的每个属性来加载表。另外,由于属性需要通过 NSTableView 进行编辑,我可以使用行索引,找到属性的 keypath 来修改和修改它。
我收到“无法分配给'Any'类型的不可变表达式”错误:
以及在
这举例说明了我想如何更改 Strategy 类中的属性名称
我认为这与 self 不可变有关,但我不知道如何解决这个问题。
如果这是一个没有经验的程序员的愚蠢问题,谢谢并道歉。
ios - 获取结构中嵌套对象的路径
我需要检索嵌套对象的路径。
假设我有一个看起来像这样的模型:
然后我有我的实例:
现在我想在ModelB
props
.
通过执行以下操作:
我期待的路径应该是这样的:
“模型B/道具/0/模型C”
其中0
是元素在props
数组中的位置。
反正有没有通过使用CodingKey
或可能实现这一点KeyPath
?
swift - 如何使用 Swift KeyPaths 的异构数组
似乎应该可以使用KeyPath
s 数组作为排序键来使用任意数量的排序键对 Swift 结构数组进行排序。从概念上讲,这很简单。您将 KeyPaths 数组定义为通用对象,其中唯一的限制是 keypath 中的属性是Comparable
。
只要所有的 KeyPath 指向相同类型的属性,一切都很好。但是,一旦您尝试使用指向数组中不同类型元素的 KeyPath,它就会停止工作。
请参阅下面的代码。我创建了一个具有 2 个 Int 属性和一个 double 属性的简单结构。我为实现一个函数的 Array 创建了一个扩展,sortedByKeypaths(_:)
该函数指定了一个可比较的泛型类型 PROPERTY。它需要一个指向某个对象元素的 kepath 数组,该元素指定了 PROPERTY 类型的属性。(可比较的属性。)
只要您使用 KeyPaths 数组调用该函数到所有相同类型的属性,它就可以完美地工作。
但是,如果您尝试将键路径数组传递给不同类型的属性,则会引发错误“无法将 '[PartialKeyPath]' 类型的值转换为预期的参数类型 '[KeyPath]'”
由于数组包含异构键路径,因此由于类型擦除,数组会演变为类型“[PartialKeyPath]”,并且您不能使用 PartialKeyPath 从数组中获取元素。
这个问题有解决方案吗?无法使用异构的 KeyPaths 数组似乎严重限制了 Swift KeyPaths 的实用性
arrays - 如何简化 Swift 数组初始化
这是参考https://stackoverflow.com/a/47765972/8833459。给出以下声明:
是否有一个 init 或其他可以完成的操作,以便以下(或类似的)也可以工作?
原来的说法就是打字太多了!我的“首选”方法目前给出了错误:
swift - 在 Swift 4 中访问 PartialKeyPath 的可选值
使用PartialKeyPath
API,您如何访问键路径引用的值?例如,这适用于非可选值,但不适用于Optional
值。
我遇到的问题是self[keyPath: keyPath]
返回一个非可选Any
值。
结果是case nil
永远不会执行,最后一个案例被打印为Optional(value)
.
如何value
正确解包以提取可选项?
swift - 如何通过一对多关系中第一项的键路径对领域结果进行排序?
我的模型有一个领域对象,它通过 propertyGroupOfEvents
与领域对象建立了一对多的关系。每个人都有一个财产。Event
events
Event
date
我有一个Results<GroupOfEvents>
,我想按date
中的第一个事件排序events
。如果我对一个常规的 swift 数组进行排序,它看起来像:
这是我对 a 进行排序的失败尝试Results<GroupOfEvents>
:
它给出了错误:
'无法对关键路径'events.first.date'进行排序:属性'GroupOfEvents.events'的类型'array'不受支持。'
我怎样才能按照我想要的方式对其进行排序?
你可能会问我的问题:
你为什么按第一个事件的日期排序?这不是人们通常会做的事情。
事实上,GroupOfEvents
包含具有相同日期的事件,因此使用任何事件的日期events
都可以。
你为什么不把date
财产搬到GroupOfEvents
?
是的,我可以这样做,但我正在寻找替代方案。
您为什么不摆脱GroupOfEvents
并在日期之前获得所有Events
当时的小组?
尽管所有events
的GroupOfEvents
日期都相同。两个不同的事件GroupOfEvents
也可以有相同的日期。还有其他的特性可以区分GroupOfEvents
。
json - 使用 JQ 展平嵌套的 Json 对象
我正在创建一个脚本来将 JSON 对象转换为“字符串”文件(用于翻译目的)。这个想法是改变:
进入
这是通过以下方式完成的:
jq -r 'to_entries|map("\"\(.key)\"=\(.value|tojson);")|.[]'
好的!
现在,我的问题是嵌套对象:
我想有这样的结果:
谁能帮忙?!我已经挠头好几个小时了……
swift4 - 来自字符串的 Swift Keypath
有没有办法从 Swift 4 中的字符串创建 Keypath 以通过其路径或变量名访问结构中的值
最后我发现我应该使用 CodingKeys 而不是 KeyPaths 来通过 String 访问结构的变量的值
在此先感谢,迈克尔