所以我开始直接学习swift,我试图将这个目标C转换为快速但不确定它的含义,有人可以解释一下吗?
Side1 = ([[[ValueArray objectAtIndex:Counter-1] objectAtIndex:2] intValue] == 1)?-1:1;
其中,Side = 0,ValueArray = []和Counter = 0
编辑:它在循环中所以反对++ 感谢
答案 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转换器。