无法在 ios swift promisekit 上使用 then
Unable to use then on ios swift promisekit
我创建了一个从 API 和 returns 获取一些数据的承诺。现在我遇到的问题是在获得 json 数据后,我需要将它们存储在设备存储(领域)上。在我尝试调用 promise 之后,我收到一些错误提示 Cannot convert value of type '(Any) -> Void' to expected argument type '(_) -> _' 。但是当我尝试完成时它完美地工作。但是我需要使用 then 将数据保存在 realm 上。
以下方法工作正常
Translator().translators().done { data -> Void in
print(data[0].name)
}.catch { error in
print(error)
}
但是下面两种方法都失败了
Translator().translators().then() { data -> Void in
print(data)
}.catch() {
(e: Error) in
print(e)
}
上面给出了一个错误
Cannot convert value of type '(Any) -> Void' to expected argument type '(_) -> _'
下面的方法给出了另一个类似的错误
Translator().translators().then() {
(data: [Translator]) -> Void in
print(data[0].name)
}.catch() {
(e: Error) in
print(e)
}
错误信息:
Cannot convert value of type '([Translator]) -> Void' to expected argument type '([Translator]) -> _'
我创建的承诺:
func translators() -> Promise<[Translator]> {
return firstly {
Alamofire.request("http://192.168.0.107:3000/translatdors", method: .get).responseData()
}.map {
try JSONDecoder().decode([Translator].self, from: [=17=].data)
}
}
我的代码和错误的图像
当你做 .then
时你必须 return 一个 promise
因为直到 .done
你还没有完成。我没有看到在 .done
中保存领域数据有任何问题,因为您的方法没有 return 类型。
如果你还想使用.then
,可以这样操作。
Translator().translators().then({ data -> Promise<[Translator]> in
return Promise.value(data)
}).done({ data in
// Save to realm
}).catch({ error in
print(error.localizedDescription)
})
我创建了一个从 API 和 returns 获取一些数据的承诺。现在我遇到的问题是在获得 json 数据后,我需要将它们存储在设备存储(领域)上。在我尝试调用 promise 之后,我收到一些错误提示 Cannot convert value of type '(Any) -> Void' to expected argument type '(_) -> _' 。但是当我尝试完成时它完美地工作。但是我需要使用 then 将数据保存在 realm 上。
以下方法工作正常
Translator().translators().done { data -> Void in
print(data[0].name)
}.catch { error in
print(error)
}
但是下面两种方法都失败了
Translator().translators().then() { data -> Void in
print(data)
}.catch() {
(e: Error) in
print(e)
}
上面给出了一个错误
Cannot convert value of type '(Any) -> Void' to expected argument type '(_) -> _'
下面的方法给出了另一个类似的错误
Translator().translators().then() {
(data: [Translator]) -> Void in
print(data[0].name)
}.catch() {
(e: Error) in
print(e)
}
错误信息:
Cannot convert value of type '([Translator]) -> Void' to expected argument type '([Translator]) -> _'
我创建的承诺:
func translators() -> Promise<[Translator]> {
return firstly {
Alamofire.request("http://192.168.0.107:3000/translatdors", method: .get).responseData()
}.map {
try JSONDecoder().decode([Translator].self, from: [=17=].data)
}
}
我的代码和错误的图像
当你做 .then
时你必须 return 一个 promise
因为直到 .done
你还没有完成。我没有看到在 .done
中保存领域数据有任何问题,因为您的方法没有 return 类型。
如果你还想使用.then
,可以这样操作。
Translator().translators().then({ data -> Promise<[Translator]> in
return Promise.value(data)
}).done({ data in
// Save to realm
}).catch({ error in
print(error.localizedDescription)
})