问题标签 [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.
ios - 你如何编写一个只能调用一次的 Swift 完成块?
假设我有一个 Swift 类,它存储一个完成块,并执行一些异步任务。
我希望该块由首先完成的任务中的任何一个调用,但只有那个 - 我不希望在第二个任务完成时再次调用它。
我怎样才能以干净的方式实现这一点?
ios - 属性包装器:“不能在属性初始化程序中使用实例成员;属性初始化程序在‘self’可用之前运行”
我正在尝试创建波纹管属性包装器
但是当我尝试使用它时,我得到“不能在属性初始化器中使用实例成员;属性初始化器在'self'可用之前运行”
有没有办法通过这个错误?
ios - CurrentValueSubject 的属性包装器 - 内存管理
我想创建一个property wrapper
for CurrentValueSubject
。我已经这样做了:
这行得通,但我想用它来改变一点——使用结构而不是类。为此使用 struct 的问题是有时我会Simultaneous accesses
出错。而且我知道为什么,当sink
我从这个发布者那里尝试从包装值中读取值时,就会发生这种情况。因此,例如使用这样的代码:
而且我或多或少知道为什么 - 因为当projectedValue
执行它的观察时,包装的值仍在设置它的值的过程中。在课堂上这没问题,因为它只会更改值,但是使用 struct 它实际上会修改结构本身,所以我试图同时对其进行写入和读取。
我的问题是 - 是否有一些聪明的方法可以克服这个问题,同时仍然使用结构?我不想dispatch async
。
我也知道它的@Projected
工作原理与此类似propertyWrapper
,但有很大的不同 -Projected
执行 on willSet
,while CurrentValueSubject
on didSet
。Projected
无论如何都有同样的问题。
我知道我可以读取闭包内的值,但有时我将它与各种函数调用一起使用,最终可能会使用它self.test
。
swift - 传递带有包装属性的对象不允许在(设置)上编译
我按照本指南使用用户默认值创建包装属性:
https://www.vadimbulavin.com/advanced-guide-to-userdefaults-in-swift/
现在,我有 LocalStorage 类,它将在教程结束时采用这个“Storage()”类,然后访问该对象的引用以从 UserDefaults 值中获取数据。出于某种原因,当我在我的代码中设置一个字符串时,它不再构建/编译。它适用于布尔值。下面的一个例子:
swift - 当 self 尚未初始化时,如何在属性包装器中使用现有属性?(斯威夫特用户界面)
我在属性包装器中有一个带有两个变量的结构。其中一个变量应该是从另一个变量中计算出来的。当我尝试这样做时,我收到以下错误:
不能在属性初始值设定项中使用实例成员“名称”;属性初始化程序在 'self' 可用之前运行。
我尝试为这些变量分配一个临时值,然后在自定义init()
函数中重新分配它们,但这似乎不起作用。我制作了代码的简化版本,看看是否可以隔离问题。
我注意到,当我将 nameTag 更改为@ObservedObject
,而不是@State
时,它能够被正确地重新分配。虽然我不相信我可以将名称更改为@ObservedObject
. 谁能告诉我我做错了什么?
swift - 通过属性包装器崩溃的嵌套依赖注入
按照这个它工作正常。
但是,当我尝试用同样的方法解决嵌套依赖项时(依赖注入的类又具有依赖项——在我们的例子中是 NetworkService),它崩溃了。我在这里做错了什么?任何帮助将不胜感激。
实时场景
你可以在操场上运行的代码
崩溃日志:-
错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)。进程一直停留在被中断的地方,使用“thread return -x”返回表达式求值前的状态。
swift - Swift - 指定符合泛型类型参数的协议
我想要做的是有两个泛型类型参数,其中一个是特定类型,另一个是协议,如下所示:
这样,可以隐藏实际类型,只暴露协议。
现在这不起作用,因为P
它是一个非类、非协议类型,所以T
不能被限制在它上面。
有没有解决的办法?
ios - 在超类拥有的属性中应用属性包装器
我已经为 UIView、UILabel 等 UI 组件的主题创建了自己的属性包装器。
在这种情况下,我会得到一个编译错误“不能用存储的属性'view'覆盖”
我知道视图是 UIViewController 的一个属性。您知道是否有任何可能的方法将属性包装器应用于存储的(超类)属性?任何建议将不胜感激:) 非常感谢!