问题标签 [property-wrapper]
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 - 当@Published 发布它包装的值时?
我有出版商
还有这段代码,它监听它
问题是 .onRecieve 什么时候执行?每次访问 feedData?或者每次更改 feedData 的任何属性时?当feedData 发生变化时,这个属性包装器如何知道?
swift - 转义闭包捕获变异的“自我”参数 (SWIFT 5)
我正在尝试使用@propertyWrapper 创建一个线程安全的结构,但是当我设置一个值时,我在操场上遇到了这样的错误。错误发生,只有当我改变async
to sync
,但我只需要有async
功能
和我想使用它的类:
swift - 如何从 SwiftUI 中的 ARView 扩展更新 Observable 对象?
我正在尝试从 ARView 扩展更新 globalDataTransfer 类并将更改反映到 ArView。下面是 globalDataTransfer 函数
我的 ARViewContainer
我的 ARView 扩展是
内容视图:
谁能告诉我如何将这个 Observable 对象传递给 ARView,或者有什么方法可以从 ARView 扩展中获取 Val 变量并在我的 View Text 上定期更新它。
swift - 使用@ObservedObject 时是否可以在 Swift 中嵌套属性包装器?
我最近开始深入研究 SwiftUI、Combine 和属性包装器的美妙世界,并且正在努力将 @ObservedObject 与我编写的 @Injected 属性包装器结合起来,以便将依赖项注入到我的视图中。大多数时候我的@Injected 包装器工作正常,但是当与@ObservedObject 配对管理我的视图模型时,我收到“属性类型与'wrappedValue' 属性的类型不匹配”错误。
这是我的@Injected 属性包装器目前的样子:
这是我目前的用法:
以这种方式订购包装器,我收到:“属性类型 'MyModalViewModel' 与其包装器类型 'ObservedObject' 的 'wrappedValue' 属性不匹配”,而 MyModalViewModel 类确实从 ObservableObject 扩展。
如果我翻转包装器,它会编译,但 Swinject 会尝试解析包装的 ObservedObject 类,并且因为容器只是注册原始的 MyModalViewModel 类,所以此解析失败并且应用程序崩溃。
同时,通过直接赋值来赋值@ObservedObject 值:
我认为原始代码应该编译,看到 @Injected 将返回一个符合 ObservableObject 的包装值,就像 @ObservedObject 所期望的那样,尽管所有这些对我来说仍然是相当新的,所以我可能会遗漏一些东西。这里的任何输入将不胜感激。谢谢!!
ios - 如何在 Swift 中测试和模拟属性包装器?
假设我有一个非常常见的属性包装用例,使用UserDefaults
.
我现在声明一个对象,它将保存我存储在UserDefaults
.
现在,当我想在某个地方使用它时,比如说在视图模型中,我会有这样的东西。
这里很少出现问题。
- 在这种情况下,我似乎有义务使用
.standard
用户默认值。如何使用其他/模拟实例测试该视图模型UserDefaults
? - 如何使用其他/模拟实例测试该属性包装器
UserDefaults
?我是否必须创建一个新类型,它是上述的干净副本DefaultsStorage
,通过模拟UserDefaults
并测试该对象?
swift - 如何在类型上使用属性包装器抽象单例?
在协议中,我想从函数创建单个实例,因此我使用容器来存储静态实例,如下所示:
稍后,一个类型可以符合它并替换默认实现,但也需要一个实例:
我希望通过使用属性包装器来封装这个创建单例的仪式,但是在类型上。我想做这样的事情:
有没有办法实现这个或类似的东西?
swift - 将自定义属性包装器与 @Published 相结合
我希望将自定义属性包装器应用于已经包装的变量,像(A)或(B)@Published
一样嵌套它们
(注意包装器的应用顺序)。
@Custom @Published var myVar
@Published @Custom var myVar
在(A)的情况下,我得到了错误
'wrappedValue' is unavailable: @Published is only available on properties of classes
对于(B)
error: key path value type 'Int' cannot be converted to contextual type 'Updating<Int>'
两者都不是特别有用。任何想法如何使它工作?
最小代码示例
swift - 可解码属性包装器的自动可解码合成
假设我有可解码的属性包装器:
编译器确实为以下内容综合了 init
为了测试这是否有效,我只是尝试解码空 JSON(即“{}”)
但是,string
属性不被视为可选,即当没有string
密钥时,我得到一个错误,即找不到密钥。
有解决办法吗?
swiftui - 将绑定传递给类型属性包装器的变量 - 失去基础类型
我正在尝试将绑定传递给使用属性包装器创建的变量。当我将绑定传递给另一个视图时,我似乎失去了对基础类型的访问。在下面的示例代码中,我演示了我可以更新原始绑定值,但当我将其绑定传递给另一个视图时不能: