在 Swift 中调用实例方法错误消息没有完全匹配
Posted
技术标签:
【中文标题】在 Swift 中调用实例方法错误消息没有完全匹配【英文标题】:No exact matches in call to instance method error message in Swift 【发布时间】:2020-09-16 14:24:48 【问题描述】:我从来没有得到过这个,这个错误信息在 Swift 中是什么意思:
对实例方法“dataTask(with:completionHandler:)”的调用没有完全匹配
这是我的代码块:
var request: NSMutableURLRequest? = nil
let task = URLSession.shared.dataTask(
with: request,
completionHandler: data, response, error in
DispatchQueue.main.async(execute:
/// ...
)
)
task.resume()
错误报告
通过 feedbackassistant.apple.com 报告:FB7717686
【问题讨论】:
【参考方案1】:在使当前类符合SKPaymentTransactionObserver
协议之前,在代码中添加SKPaymentQueue
方法(例如SKPaymentQueue.default().add()
)时,Xcode 会出现此错误。
如果是这种情况,只需让您的类符合SKPaymentTransactionObserver
协议即可解决此错误。
【讨论】:
【参考方案2】:如果您在 Text
元素中遇到此错误,请尝试在 String(describing: value)
中包装您的值。修复了我的情况。
Text("Leading text \(String(describing: value))")
Source
【讨论】:
可能不是问题的确切答案,但通常是解决此问题的一种方法。通常它只是一个未包装的可选项,这样你会发现【参考方案3】:为什么 Xcode 大喊大叫?
也许消息文本看起来有点不言自明,但只是因为 Xcode 并没有准确地指向参数本身,第一次有点难以理解。
Xcode 大喊大叫,因为该方法想在方法调用上查看确切的参数类型,这很容易。
示例案例的解决方案:
var request: URLRequest? = nil
let task = URLSession.shared.dataTask(
with: request!,
completionHandler: data, response, error in
DispatchQueue.main.async(execute:
)
)
task.resume()
只使用 URLRequest 而不是 NSMutableURLRequest。
SwiftUI 示例的解决方案
假设这是您的 UI:
ZStack()
Image(systemName: "photo")
.resizable()
.aspectRatio(contentMode: .fit)
.background(Color.green)
.foregroundColor(Color.white)
.cornerRadius(12)
Text(getToday())
.font(.headline)
这是您在 Text(...) 中调用的方法:
func getToday() -> Any?
let now = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.day], from: now)
return components.day
在上面的示例中,解决方案是将 Any? 更改为 String 类型。
调用实例方法'* * *'没有完全匹配
这是在方法调用中使用错误类型的一般错误消息。这就是为什么我在这里添加以帮助其他人。
我希望这个答案对你们中的一些人有所帮助。
最好的。
【讨论】:
您可能想向 Apple 提交错误报告。当然,诊断可能比这更好。 谢谢@matt,我是通过feedbackassistant.apple.com举报的。【参考方案4】:我使用带有 URL 的 dataTask
,但我将 URL 解包为 NSURL
,这就是它给我一个错误的原因。
我正在这样做:
if let url = NSURL(String: "http://myyrl.com/filename.jpg")
//my code
修复错误的方法是用URL
替换NSURL
:
if let url = URL(String: "http://myyrl.com/filename.jpg")
//my code
【讨论】:
感谢您的回答。这是关于 Xcode 的,它是一般错误消息。它可以在很多情况下导致。最好的。以上是关于在 Swift 中调用实例方法错误消息没有完全匹配的主要内容,如果未能解决你的问题,请参考以下文章