这段代码在Swift 2中工作得很好
override func prepare(for segue: UIStoryboardSegue?, sender: Any?) {
if (segue!.identifier == "FeedDetailSeg") {
let viewController:ItemDetail = segue!.destination as! ItemDetail
viewController.DetailItem = collectionItems![self.selectedRow]
if self.cognitoID == collectionItems![self.selectedRow].seller {
viewController.owned = true
}
else {
viewController.owned = false
}
//remove item from untapped
//appDelegate.untapped.removeAtIndex(self.selectedRow)
//collect view info
self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continueWithBlock({
(task: BFTask!) -> BFTask! in
if (task.error != nil) {
print(task.error!.description)
} else {
print("DynamoDB save succeeded")
}
return nil;
})
}
}现在在Swift 3中,我在行上得到一个错误
//collect view info
self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continueWithBlock({也就是说:无法转换类型为'(BFTask<_>!) -> BFTask!‘的值。转换为预期的参数类型'(BFTask?) -> Any?!‘
这是使用亚马逊网络服务将项目保存到DynamoDB。
发布于 2016-12-02 15:56:56
将返回类型改为Any?而不是BFTask?,如下所示。
//collect view info
self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continueWithBlock({
(task: BFTask!) -> Any! in
if (task.error != nil) {
print(task.error!.description)
} else {
print("DynamoDB save succeeded")
}
return nil;
})谢谢:)
发布于 2017-04-19 16:27:26
(更新为Swift 3.1语法)
您的self.dataStash任务为尖括号中的通用BFTask指定了一种类型。让我们假设你的self.dataStash是这样的:
var dataStash : BFTask<MyObject>!然后,您必须将在dataStash任务完成时调用的代码更改为:
self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continue({ (task: BFTask<MyObject>!) -> Any? in特别是在你的链式任务中,你可以指定BFTask返回类型:
continue({ (task: BFTask<MyObject>!) -> BFTask<MyDifferentObject>? in请注意,MyObject和MyDifferentObject必须符合AnyObject协议。
https://stackoverflow.com/questions/39939342
复制相似问题