0

这段代码在 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?!'

这是使用 AWS 将项目保存到 DynamoDB。

4

2 回答 2

0

将返回类型更改为,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;
    })

谢谢:)

于 2016-12-02T07:56:55.640 回答
0

(更新为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协议。

于 2017-04-19T08:27:26.180 回答