swift-结果.在呼叫中取消额外的参数



i具有以下功能

func refreshFeedItems(completion: @escaping ActivityFeedCompletion) {
    let currentTab = feedTab
    //Result<([FeedItem], Bool)>) -> Void
    // Load the cache in and start the spinner for the network request we're about to make
    completion(.success(cache[currentTab], true))
    ActivityFeedService.sharedInstance.refreshCommunityFeed(tab: currentTab) { result in
        // A quick user might switch tabs before this
        // call completes since we call completion twice
        guard currentTab == self.feedTab else {
            return
        }
        switch result {
        case .failure(let error):
            Log.warn(error)
            completion(.failure(error))
        case .success(let items):
            self.cache[self.feedTab] = items
            let tuple = Result.success(items,true) as ActivityFeedCompletion
           completion((tuple,false))
        }
    }
}

但是这条线

completion(.success(cache[currentTab], true))

和这个

let tuple = Result.success(items,true) as ActivityFeedCompletion

两者都为我扔了一个"呼叫中的额外参数"错误。

这是我的ACTICVITY完成Typealias

typealias ActivityFeedCompletion = (Result<([FeedItem], Bool)>) -> Void

我不确定为什么会遇到这个错误,我认为这是误导性的,但我毫无头脑来解决问题。

第二个错误很明显(桥梁铸件很可能是冗余)

let tuple = Result.success(items,true) //  as ActivityFeedCompletion

已经表示结果,因此您必须写

completion(tuple)

第一个错误可能是类似的,目前尚不清楚什么是

您隐藏了代码的许多相关部分,因此我需要猜测许多部分。如果我的答案远非您的期望,那么您应该更好地更新问题并显示代码的相关部分。例如,您的ActivityFeedCache的整个定义。


带有此定义:

typealias ActivityFeedCompletion = (Result<([FeedItem], Bool)>) -> Void

ActivityFeedCompletionResult的成功案例采用元组类型([FeedItem], Bool)的参数。

在此行中:

completion(.success(cache[currentTab], true))

您正在将两个参数传递给success,因此消息已经足够清楚了。您需要通过参数。

completion(.success((cache[currentTab], true)))

和后一部分:

let tuple = Result.success(items,true) as ActivityFeedCompletion
completion((tuple,false))

您完全误解了类型。Result不能转换为ActivityFeedCompletion,并且您不能将RAW元组(tuple,false)传递给cache0,该completion服用Result<([FeedItem], Bool)>

请尝试这样的事情:

completion(.success((items, true/* or false, which you want to pass? */)))

最新更新