我想将一些对象上传到服务器。我正在使用工作管理器和 uniqueWork 来避免上传重复的对象。工作受到限制,因此它们仅在有互联网连接时才能运行。问题是我希望这些对象中的每一个一次上传一个,但所有的工作都是一次发生的。
我知道我可以使用 beginWith 和 workContinuations 来依次执行工作,但不幸的是,可以在不同的时间创建多个对象,因此我无法访问创建工作时的所有工作。
val workRequest = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(networkConstraint)
.build()
WorkManager.getInstance()
.enqueueUniqueWork(uniqueName, ExistingWorkPolicy.KEEP, workRequest)
Run Code Online (Sandbox Code Playgroud)
我认为enqueue
这意味着所有的工作都会像队列一样一次发生。有没有办法让它以这种方式工作?
我想为UIView创建一个基类,该基类要求委托符合View定义的特定协议。
class BaseView<P>: UIView {
weak var delegate: P?
}
protocol MyProtocol {}
class MyView: BaseView<MyProtocol> {}
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:“'弱'一定不能应用于非类绑定的'T';考虑添加一个具有类绑定的协议一致性”。
如何解决此错误?还是周围有工作?还是不必首先使委托变量变弱?提前致谢。