Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Objective-C中的函数内使用函数参数_Objective C_Function_Nsstring_Arguments - Fatal编程技术网

在Objective-C中的函数内使用函数参数

在Objective-C中的函数内使用函数参数,objective-c,function,nsstring,arguments,Objective C,Function,Nsstring,Arguments,我是Objective-C开发的新手,我已经遇到了第一个问题。我正在尝试编写一个函数,该函数将字符串作为参数,并将该字符串与其他字符串进行比较。函数的伪代码如下所示: String string2 String string3 function compare_string (String string) { if (string == "a specific string" && string == string2 && strin

我是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 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中是否有其他方法使用函数参数?

如下所示:

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

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

如下所示:

-(void)compareString:(NSString *string){
    if ( [string isEqualToString:@"a specific string"] && [string isEqualToString:string2] && [string isEqualToString:string3] ){
        // do something
    }
}
注意:
str1==str2
将比较内存地址,而
IsequalString:
将比较字符串的内容。

请查看文档,因为已经有很多方法可以为您执行此操作,因此您不需要编写自己的字符串比较代码

例如

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"];
然后后来打电话给它会是这样的

- (void)compareString:(NSString *)string;
{
  if ([@[string, string, string] isEqual:@[ @"a specific string", string1, string2]]) {
    // do stuff
  }
} 
[self compareString:@"A string to compare"];
NB
将其封装在数组中比单独比较它们要好一些

查看文档,因为已经有很多方法可以为您实现这一点,所以您不需要编写自己的字符串比较代码

例如

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"];
然后后来打电话给它会是这样的

- (void)compareString:(NSString *)string;
{
  if ([@[string, string, string] isEqual:@[ @"a specific string", string1, string2]]) {
    // do stuff
  }
} 
[self compareString:@"A string to compare"];
NB
将其封装在数组中比单独比较它们要好一些

只要使用“string”-“formal parameter”-引用参数即可。但是请注意,只有当两个字符串实际上是同一个对象时(在C、Java和许多其他语言中也是如此),将字符串与==进行比较才会返回true。要比较两个字符串的等价性,需要使用isEqualToString。只需使用“string”——形式参数——引用参数即可。但是请注意,只有当两个字符串实际上是同一个对象时(在C、Java和许多其他语言中也是如此),将字符串与==进行比较才会返回true。要比较两个字符串的等效性,需要使用isEqualToString。