首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift 3中使用BFTask?

如何在Swift 3中使用BFTask?
EN

Stack Overflow用户
提问于 2016-10-09 10:21:16
回答 2查看 1K关注 0票数 0

这段代码在Swift 2中工作得很好

代码语言:javascript
复制
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中,我在行上得到一个错误

代码语言:javascript
复制
//collect view info    
self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continueWithBlock({

也就是说:无法转换类型为'(BFTask<_>!) -> BFTask!‘的值。转换为预期的参数类型'(BFTask?) -> Any?!‘

这是使用亚马逊网络服务将项目保存到DynamoDB。

EN

回答 2

Stack Overflow用户

发布于 2016-12-02 15:56:56

将返回类型改为Any?而不是BFTask?,如下所示。

代码语言:javascript
复制
 //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;
    })

谢谢:)

票数 0
EN

Stack Overflow用户

发布于 2017-04-19 16:27:26

(更新为Swift 3.1语法)

您的self.dataStash任务为尖括号中的通用BFTask指定了一种类型。让我们假设你的self.dataStash是这样的:

代码语言:javascript
复制
var dataStash : BFTask<MyObject>!

然后,您必须将在dataStash任务完成时调用的代码更改为:

代码语言:javascript
复制
self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continue({ (task: BFTask<MyObject>!) -> Any? in

特别是在你的链式任务中,你可以指定BFTask返回类型:

代码语言:javascript
复制
continue({ (task: BFTask<MyObject>!) -> BFTask<MyDifferentObject>? in

请注意,MyObjectMyDifferentObject必须符合AnyObject协议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39939342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档