gpt4 book ai didi

swift - 被 Swift 中的 Ambiguous Reference Member Reference 错误搞糊涂了

转载 作者:可可西里 更新时间:2023-11-01 01:36:55 25 4
gpt4 key购买 nike

鉴于此工作区示例:

import Foundation
import CoreBluetooth

class Something: NSObject, CBPeripheralDelegate {
var peripheral:CBPeripheral!

func peripheral(peripheral: CBPeripheral, didUpdateValueForDescriptor descriptor: CBDescriptor, error: NSError?) {

}

func foobar() {
self.peripheral.writeValue([], forDescriptor: 0) // I use a real value instead of 0 in real code
}
}

我收到如下错误:

Playground execution failed: Playground2.playground:6:3: error: ambiguous reference to member 'peripheral'
self.peripheral.writeValue([], forDescriptor: 0)
^~~~
Playground2.playground:5:6: note: found this candidate
var peripheral:CBPeripheral!
^
Playground2.playground:1:7: note: found this candidate
func peripheral(peripheral: CBPeripheral, didUpdateValueForDescriptor descriptor: CBDescriptor, error: NSError?) {

因此,它似乎无法确定我的 self.peripheral 代码是对名为 peripheral 的变量的引用还是我选择的委托(delegate)函数之一实现?我想我可以将我的 peripheral 变量重命名为其他东西......

但令我惊讶的是,如果我构造一个看起来类似的例子,它没有任何歧义消除问题:

import Foundation

extension Int {
func frobnicate() { }
func barf() { }
}

class YakAttack: NSObject {
var something:Int!

func something(something:Int, else:Int) {

}

func foobar() {
self.something.frobnicate()
}
}

foobar() 函数应该与 self.something 引用有同样的问题,但它没有这样的问题。有什么区别?

(我使用的是 XCode 7.3 Beta 5,其中包含最新的 Swift 版本)

最佳答案

我最好的猜测是,由于处理 Objective-C 协议(protocol)/数据类型,这是一条传递困惑的消息。我真的没有资格分析具体情况,但到目前为止,我了解到在处理这两种语言时仍然会出现一些像这样的奇怪错误。

我猜这会在未来得到解决,但现在您可能只需更改变量名称即可。

关于swift - 被 Swift 中的 Ambiguous Reference Member Reference 错误搞糊涂了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com