首页 > 解决方案 > 如何在 SwiftUI 中将对象属性作为参数传递?

问题描述

我知道以下在 Javascript 中是可能的。我可以在 SwiftUI 中使用类似的东西将对象属性作为字符串传递吗?

var a = { foo: 123 };
a.foo    // 123
a['foo'] // 123
var str = 'foo';
a[str]   // 123

标签: swiftswiftui

解决方案


您可能想要的是一条关键路径。例如,给定:

struct A {
    var foo: Int
}

您可以构造一个A, 并访问它:

let a = A(foo: 123)
a.foo // 123

鉴于此,您可以foo通过键路径访问该属性:

let kp = \A.foo
a[keyPath: kp]  // 123

如果您的实际目标是将字符串映射到整数,那只是 a [String: Int],它的工作原理相同。如果您的意思是“我想将字符串传递给对象,但发生了相当随机的事情,并且可能像在 JavaScript 中那样崩溃”,那么使用自定义下标(如subscript(key: String) -> Int?.


推荐阅读