-8

我有以下代码:

- (IBAction)topSecretFetchComplete:(ASIHTTPRequest *)theRequest{

   strFinal = [theRequest responseString];
   NSLog(@"Sattus Code : %@",[theRequest responseString]);

   [self GoTo];
}

我正在使用 ASIHttp 进行登录。如果登录正常strFinal设置为successfully,否则设置为failed

我的GoTo方法是

-(void)GoTo{
    NSString *failStr = @"failed";
    NSString *successStr = @"successfully";
    if (strFinal == successStr) {
       //Navigate to other xib

    }else
       if (strFinal == failStr) {
            UIAlertView *AlertFail = [[UIAlertView alloc] initWithTitle:@"LogIn Failed !" message:@"Wrong ID or Password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [AlertFail show];
        }
    }
}

strFinal问题是除非失败,否则不会显示警报。

4

8 回答 8

2

改变 :

if (strFinal == successStr) {

if ([strFinal isEqualToString:successStr]) {
于 2013-08-06T10:57:13.960 回答
1

== 运算符比较指针,即使它们的内容相同,它们通常也会不同。isEqualToString 方法比较它们的内容。所以请像这样比较...

if ([failStr isEqualToString:successStr])
{
     // ------- success
}
else
{
      // ---- fail ------
}
于 2013-08-06T10:56:50.760 回答
1
 if (strFinal == failStr)

那是行不通的。您必须使用 isEqualToString。

if ([strFinal isEqualToString: failStr])
于 2013-08-06T10:58:04.257 回答
1

只需编辑 isEqualToString: from "=" 符号。这是比较 2 个 NSString 的正确方法。

   -(void)GoTo{
    NSString *failStr = @"failed";
    NSString *successStr = @"successfully";
    if ([strFinal isEqualToString:successStr]) {
       //Navigate to other xib

    }else
       if ([strFinal isEqualToString:failStr]) {
            UIAlertView *AlertFail = [[UIAlertView alloc] initWithTitle:@"LogIn Failed !" message:@"Wrong ID or Password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [AlertFail show];
        }

    }

希望这可以帮助 ...

于 2013-08-06T10:59:26.827 回答
1

要比较字符串,您需要使用 isEqualToString:这是一个如何使用它的示例:

if ([strFinal isEqualToString: successStr])
{
    // your code here
}
于 2013-08-06T11:00:43.423 回答
1

像这样更改您的代码,然后检查

isEqualToString

返回一个布尔值,该值指示给定字符串是否等于使用基于 Unicode 的文字比较的接收者。

- (BOOL)isEqualToString:(NSString *)aString

参数

字符串

与接收者进行比较的字符串。

返回值

如果 aString 等效于接收者(如果它们具有相同的 id 或者在文字比较中它们是 NSOrderedSame),则为 YES,否则为 NO

讨论

比较使用字符串的规范表示,对于特定字符串,它是字符串的长度加上构成字符串的 Unicode 字符。当此方法比较两个字符串时,如果各个 Unicode 相同,则无论后备存储如何,这些字符串都是相等的。“字面量”应用于字符串比较时,表示不应用各种 Unicode 分解规则,单独比较 Unicode 字符。因此,例如,表示为组合字符序列“O”和变音符号的“Ö”不会与表示为一个 Unicode 字符的“Ö”比较。

特别注意事项

当您知道两个对象都是字符串时,此方法是一种比 isEqual: 更快的检查相等性的方法。

可用性

在 OS X v10.0 及更高版本中可用。

-(void)GoTo{
            NSString *failStr = @"failed";
            NSString *successStr = @"successfully";
            if ([strFinal isEqualToString:successStr]) {
               //Navigate to other xib

            }else
               if ([strFinal isEqualToString:failStr]) {
                    UIAlertView *AlertFail = [[UIAlertView alloc] initWithTitle:@"LogIn Failed !" message:@"Wrong ID or Password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
                    [AlertFail show];
                }

        }
于 2013-08-06T11:00:44.533 回答
1

你需要这样做

-(void)GoTo{
    NSString *failStr = @"failed";
    NSString *successStr = @"successfully";
    if ([strFinal isEqualToString:successStr]) {
       //Navigate to other xib

    }else
       if ([strFinal isEqualToString:failStr] ) {
            UIAlertView *AlertFail = [[UIAlertView alloc] initWithTitle:@"LogIn Failed !" message:@"Wrong ID or Password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [AlertFail show];
        }

}
于 2013-08-06T11:01:29.003 回答
0

您可以通过以下方式尝试

if ([strFinal caseInsensitiveCompare:@"successfully"] == NSOrderedSame)
    {
        <#statements#>
    }
于 2013-08-06T11:01:28.633 回答