Swift 二进制运算符'~=';不能应用于两个UmRet操作数
我正在努力将IDTech swiper集成到我的应用程序中,我已经取得了很大进展,添加了库,注册了通知,注销了通知,现在我正在开发一个连接阅读器的函数。当我试图根据返回值切换案例时,我似乎无法找出我在这里做错了什么。。谁能帮帮我吗Swift 二进制运算符'~=';不能应用于两个UmRet操作数,swift,switch-statement,Swift,Switch Statement,我正在努力将IDTech swiper集成到我的应用程序中,我已经取得了很大进展,添加了库,注册了通知,注销了通知,现在我正在开发一个连接阅读器的函数。当我试图根据返回值切换案例时,我似乎无法找出我在这里做错了什么。。谁能帮帮我吗 func displayUmRet(operation: String, returnValue: UmRet) { var string = "" do { switch returnValue { ca
func displayUmRet(operation: String, returnValue: UmRet) {
var string = ""
do {
switch returnValue {
case UMRET_SUCCESS: string = ""
case UMRET_NO_READER: string="No reader attached"
case UMRET_SDK_BUSY: string="Communication with reader in progress"
case UMRET_MONO_AUDIO: string="Mono audio enabled"
case UMRET_ALREADY_CONNECTED: string="Already connected"
case UMRET_LOW_VOLUME: string="Low volume"
case UMRET_NOT_CONNECTED: string="Not connected"
case UMRET_NOT_APPLICABLE: string="Not applicable to reader type"
case UMRET_INVALID_ARG: string="Invalid argument"
case UMRET_UF_INVALID_STR: string="Invalid firmware update string"
case UMRET_UF_NO_FILE: string="Firmware file not found"
case UMRET_UF_INVALID_FILE: string="Invalid firmware file"
default: string="<unknown code>"
}
} while (0)
// var retStatus = UMRET_SUCCESS==ret
//self.textResponse.text = "\(operation), \(retStatus), \(string)"
self.hexResponse.text = "";
}
func displayUmRet(操作:字符串,返回值:UmRet){
var string=“”
做{
开关返回值{
案例UMRET_成功:string=“”
case UMRET\u NO\u READER:string=“未连接读取器”
case UMRET_SDK_BUSY:string=“正在与读卡器通信”
案例UMRET\u MONO\u AUDIO:string=“MONO AUDIO enabled”
案例UMRET\u已连接:string=“已连接”
案例UMRET\u LOW\u VOLUME:string=“LOW VOLUME”
案例UMRET\u未连接:string=“未连接”
case UMRET\u不适用:string=“不适用于读卡器类型”
case UMRET\u无效参数:string=“无效参数”
案例UMRET\u UF\u无效\u STR:string=“无效固件更新字符串”
case UMRET_UF_NO_FILE:string=“未找到固件文件”
案例UMRET\u UF\u无效\u文件:string=“无效固件文件”
默认值:string=“”
}
}而(0)
//var retStatus=UMRET\u SUCCESS==ret
//self.textResponse.text=“\(操作),\(返回状态),\(字符串)”
self.hexResponse.text=“”;
}
您需要在您的案例前放置一个
:
enum UmRet {
case UMRET_SUCCESS, UMRET_FAILURE
}
var string = " "
let returnValue = UmRet.UMRET_SUCCESS
switch returnValue {
case .UMRET_SUCCESS: string = "y"
case .UMRET_FAILURE: string = "n"
}
另外,0
与Swift中的false
不同,因此:
do {
...
} while (0)
也不应该起作用
行的末尾不需要分号,因此:
self.hexResponse.text = "";
可以这样说:
self.hexResponse.text = ""
最后,如果switch语句对枚举中的每个事例都有事例,则不需要默认事例。(这就是我的示例中没有的原因)
顺便说一下,~=
只是模式匹配函数的运算符,Swift在switch语句中就是这样做的。它的工作原理有点像=
函数,例如,Int~=Int
与Int==Int
相同。但是它的功能更为广泛:例如Range~=Int
,例如0…3~=2
返回Int
是否在范围内。(在本例中也是如此)对于枚举,它将案例与案例进行匹配。在我的示例中,它将匹配UMRET\u SUCCESS
,并且string
将设置为y