我正在将一个小的java库翻译成目标c。我在翻译以下内容时遇到了一些麻烦:
return other.tokens[0].equals(tokens[0]) &&
other.tokens[1].equals(tokens[1]) &&
other.tokens[2].equals(tokens[2]) &&
other.tokens[3].equals(tokens[3]);
其他是类的实例,而令牌是一个字符串数组,它是同一个类的实例变量。到目前为止,我所拥有的是:
return ([other [[tokens[0] equals:tokens[0]]]] &&
[other [[tokens[1] equals:tokens[1]]]] &&
[other [[tokens[2] equals:tokens[2]]]] &&
[other [[tokens[3] equals:tokens[3]]]]);
但我一直收到“预期标识符”错误,我相信这意味着我的语法有问题。
答案 0 :(得分:1)
由于您在Quad类中使用了getToken方法,因此可以将其与以下实现一起使用。
return ([[other getTokens:0] isEqualToString: [self getTokens[0]] &&
[[other getTokens:1] isEqualToString: [self getTokens[1]] &&
[[other getTokens:2] isEqualToString: [self getTokens[2]] &&
[[other getTokens:3] isEqualToString: [self getTokens[3]]);
答案 1 :(得分:0)
你可以轻松将生活中的四个条件分为4行:
BOOL b1=[other.tokens[0] isEqualTo:tokens[0]];
BOOL b2=[other.tokens[1] isEqualTo:tokens[1]];
BOOL b3=[other.tokens[2] isEqualTo:tokens[2]];
BOOL b4=[other.tokens[3] isEqualTo:tokens[3]];
return (b1 && b2 && b3 && b4);
此外,替代方法是遍历所有值,如果有False
个NO
返回{/ p>}:
for(NSInteger i=0; i<4; i++){
if(![other.tokens[i] isEqualTo:tokens[i]]){
return NO;
}
}
return YES;
阅读本文,因为我不确定你比较什么样的值(Object / NSString / Number等).. Implementing -hash / -isEqual: / -isEqualTo...: for Objective-C collections
答案 2 :(得分:0)
目标C中没有这样的方法“等于”。如果你正在进行字符串比较,那应该是
[[token objectAtIndex: 0] isEqualToString:[token objectAtIndex: 0]]
但为什么要比较相同的字符串。