Objective c 将if((loc=[player locateCardValue:8])>;-1)转换为Swift 3

Objective c 将if((loc=[player locateCardValue:8])>;-1)转换为Swift 3,objective-c,swift,code-conversion,Objective C,Swift,Code Conversion,你如何将这个目标转换为C if ((loc = [player locateCardValue:8]) > -1) { 到斯威夫特3号 [player locateCardValue]返回找到卡的位置的整数'8'。返回-1表示找不到卡'8' 我可以用 let loc = player.locateCard(withValue: 8) if loc > -1 { 但是我有多个IF的嵌套,它会变得非常混乱。也许最好的方法不是将其转换为“原样”,而是使其更快速 在这种情况下,我想我会将

你如何将这个目标转换为C

if ((loc = [player locateCardValue:8]) > -1) {
到斯威夫特3号

[player locateCardValue]
返回找到卡的位置的整数
'8'
。返回
-1
表示找不到卡
'8'

我可以用

let loc = player.locateCard(withValue: 8)
if loc > -1 {

但是我有多个IF的嵌套,它会变得非常混乱。

也许最好的方法不是将其转换为“原样”,而是使其更快速

在这种情况下,我想我会将
locateCard
更改为返回
可选的
,并在找不到卡时返回
nil

func locateCard(withValue: Int) -> Card? {
    // return the position if found, nil otherwise
}
然后,你就可以写了

if let card = player.locateCard(withValue: 8) {

}

您最好的选择是转换
locateCardValue
以返回可选的
Int?
。然后你可以简单地做

if let loc = player.locateCard(withValue: 8) {
    // ...
}
或者可以使用switch语句

switch player.locateCard(withValue: 8) {
case -1: print("No card.")
case 1: // ...
// etc.
}

对于协议:Objective-C代码段不是Objective-C'ish。如果
,如何减少嵌套
的数量?谢谢。我想我在保留-1的返回值时被挂断了。可选值也适用。Swift和Objective-C版本都有一个
if