在Objective-C中的函数内使用函数参数
我是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
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。