将Objective C转换为Swift

时间:2015-10-21 14:21:35

标签: objective-c swift

所以我开始直接学习swift,我试图将这个目标C转换为快速但不确定它的含义,有人可以解释一下吗?

Side1 = ([[[ValueArray objectAtIndex:Counter-1] objectAtIndex:2] intValue] == 1)?-1:1;

其中,Side = 0,ValueArray = []和Counter = 0

编辑:它在循环中所以反对++ 感谢

3 个答案:

答案 0 :(得分:2)

if ([[[ValueArray objectAtIndex:Counter-1] objectAtIndex:2] intValue] == 1) {
    Side1 = -1
} else {
    Side1 = 1
}

ValueArray内部是什么?此外,如果Counter == 0,那么获得objectAtIndex -1将会崩溃。但基本上快速版本将是:

(ValueArray[Counter-1][2] as! NSString).intValue == 1

这有几个假设,主要是你返回String我们可以强制转发NSString以利用intValue

答案 1 :(得分:2)

这是if - else的简写。它可以像这样使用:

my_variable = (some_condition ? some_value : some_other_value)

这相当于

if some_condition
    my_variable = some_value
else
    my_variable = some_other_value

您的代码似乎检查另一个数组内的数组中对象的整数值。它可以像这样转换为Swift:

Side1 = (ValueArray[Counter - 1][2] as! Int == 1 ? -1 : 1)

正如评论中所提到的,如果Counter为0,这将会崩溃。我还假设ValueArray只包含可以转换为Int的对象。斯威夫特通常对这些事情非常挑剔。

修改

如果ValueArray包含字符串,则无法将其转换为Int。首先转换为NSString

ValueArray[Counter - 1][2] as! NSString

因此if速记变为

Side1 = ((ValueArray[Counter - 1][2] as! NSString).intValue == 1 ? -1 : 1)

答案 2 :(得分:0)

这并不总能做到最好,但绝对有帮助!它是一个Objective-C到Swift转换器。

链接https://objectivec2swift.com/#/converter/code