更新 PromiseKit 后出错:无法将“PMKFinalizer”类型的值转换为预期的参数类型“Promise<Void>”
Posted
技术标签:
【中文标题】更新 PromiseKit 后出错:无法将“PMKFinalizer”类型的值转换为预期的参数类型“Promise<Void>”【英文标题】:Error after update PromiseKit: Cannot convert value of type 'PMKFinalizer' to expected argument type 'Promise<Void>' 【发布时间】:2019-06-26 10:15:50 【问题描述】:此代码适用于 PromiseKit v.4.5.2。
func getReminderIds(idArray: [Int])
var reminderPromises: [Promise<Void>] = []
for id in idArray
if let prom = self.delegate?.getReminders(id).then( (reminderArray) -> Promise<Void> in
Utils.logMessage("Reminders for asset \(id): \(reminderArray)")
self.reminders[String(id)] = reminderArray
).catch( (err) in
self.reminders[String(id)] = nil
Utils.logMessage("Error getting reminders for asset \(id): \(err)")
)
reminderPromises.append(prom)
_ = when(fulfilled: reminderPromises).done results -> Void in
self.collectionView?.refreshCollection(collection: 0)
但是在更新到 PromiseKit v.6.8.4 后我得到了错误 “无法将 'PMKFinalizer' 类型的值转换为预期的参数类型 'Promise'” 在这一行:
reminderPromises.append(prom)
【问题讨论】:
【参考方案1】:struct Reminder
let id: Int
let value: [String: Any]
func getReminderIds(idArray: [Int])
var reminderPromises: [Promise<Reminder>] = []
for id in idArray
reminderPromises.append(getReminders(id))
_ = when(fulfilled: reminderPromises).done results -> Void in
for item in results
print(item.id)
print(item.value)
func getReminders(_ id: Int) -> Promise<Reminder>
// TODO network request or database request
return Promise $0.fulfill(Reminder(id: id, value: [:]))
【讨论】:
是的,然后更改为完成并删除它 -> 承诺以上是关于更新 PromiseKit 后出错:无法将“PMKFinalizer”类型的值转换为预期的参数类型“Promise<Void>”的主要内容,如果未能解决你的问题,请参考以下文章
将 mac 更新到 12.0.1 monterey 后无法运行 virtualbox - 仅主机适配器出错
PromiseKit 6 在没有上下文类型的情况下无法解析对成员“值”的引用
PromiseKit 无法将类型 '[Result<TYPE>]' 的值分配给类型 '[TYPE]