0

我是 Objective-C 开发的新手,我已经遇到了第一个问题。我正在尝试编写一个将字符串作为参数并将该字符串与其他字符串进行比较的函数。该函数的伪代码如下:

String string2
String string3

function compare_string (String string) {
  if (string == "a specific string" &&
      string == string2 &&
      string == string3) {
        // do something
      }
}

到目前为止,我只有以下内容:

NSString *string2 = @"Second string";
NSString *string3 = @"Third string";

(void) compare_string: (NSString *) string {

但现在我已经卡住了,因为我不知道如何string在函数内调用输入字符串。我是否应该简单地做类似的事情

if (string == string2) { ... }

还是有另一种在Objective-C中使用函数参数的方法?

4

2 回答 2

3

这将是这样的:

-(void)compareString:(NSString *string){
    if ( [string isEqualToString:@"a specific string"] && [string isEqualToString:string2] && [string isEqualToString:string3] ){
        // do something
    }
}

注意:str1==str2将比较内存地址,并isEqualToString:比较字符串的内容。

于 2013-03-12T16:26:21.743 回答
1

查看NSString的文档,已经有很多方法可以为您执行此操作 - 因此您无需制作自己的字符串比较代码

一个例子看起来像

if ([string compare:string2] == NSOrderedSame) { ... }

如果您希望进行复杂的比较(例如不区分大小写等),这很方便

对于简单的平等,您可以使用

if ([string isEqualToString:string2]) { ... }

编辑

我误读了这个问题 - 这是一个实际上与你所问的问题相关的答案

您需要使用isEqual:对象上定义的方法进行同等检查。==只会检查指针值。

你可以这样写你的方法

- (void)compareString:(NSString *)string;
{
  if ([@[string, string, string] isEqual:@[ @"a specific string", string1, string2]]) {
    // do stuff
  }
} 

然后稍后调用它看起来像这样

[self compareString:@"A string to compare"];

NB
将其包装在数组中比单独比较它们要好一些

于 2013-03-12T16:27:24.283 回答