【问题标题】:String equal not working iOS字符串等于不工作iOS
【发布时间】:2013-06-02 01:40:44
【问题描述】:

以下是我的 PHP 代码,它发送对 Web 服务请求的响应:

 $query = "select name,email,password from User where email='".$email."' AND password='".$password."'";
 $result = mysql_query($query);
 $num_rows = mysql_num_rows($result);


 if($num_rows==1)
 {
     sendResponse(200, json_encode("match"));
 }

 if($num_rows==0)
 {
     sendResponse(204, json_encode("not match"));
 }

以下是我的 iOS 代码:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{   
    NSString *status = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@" Returned Json data : %@",status);


    if ([status isEqualToString:@"match"])
    {
        AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

        [appDelegate OpenTabController];
    }

    //Boolean flag = [status isEqualToString:@"not match"];

    //NSLog(@"flag : %d",flag);

    if ([status isEqualToString:@"not match"])
    {
        NSLog(@"not match");


        UIAlertView *alertView = [[UIAlertView alloc]
                                      initWithTitle:@"Invalid email or password"
                                      message:@""
                                      delegate:nil
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
        [alertView show];

    }
}

[status isEqualToString:@"not match"] 行不起作用。

【问题讨论】:

  • 您是否将来自 Web 服务的 JSON 响应转换为主要升级到 iOS 代码?
  • 是的,我这样做了。 NSString *status = [[NSString alloc] initWithData:数据编码:NSUTF8StringEncoding]; NSLog(@" 返回的 Json 数据:%@",status);
  • 然后打印出您所期待的消息?
  • 解释什么不起作用。 status 是否真的包含“不匹配”?
  • 首先,您要将字符串转换为 json 响应。在您的 PHP 代码中,使用关联数组创建键值对,然后在 iOS 中使用 JSON 解析器将数据转换为 JSON 格式。在转换后的字典上使用 objectForKey 方法

标签: php ios web-services string-matching


【解决方案1】:

首先,您要将字符串转换为 json 响应。在您的 PHP 代码中,使用关联数组创建一个键值对,然后在 iOS 中使用 JSON 解析器将数据转换为 JSON 格式。在转换后的字典上使用 objectForKey 方法

PHP 代码

if($num_rows==1)
 {
$status = "match";
$status_array = array("status"=>"$status");
     sendResponse(200, json_encode($status_array));
 }

 if($num_rows==0)
 {
$status = "not match";
$status_array = array("status"=>"$status");
     sendResponse(204, json_encode($status_array));
 }

iOS 代码 使用下面的过程来解析 json 并根据需要获取相应的值。 http://www.raywenderlich.com/5492/working-with-json-in-ios-5

【讨论】:

    【解决方案2】:

    各位,我找到了解决办法:

    php代码:

    if($num_rows==1)
    {
        $status = array(
        "status" => "match",
        );
    
        sendResponse(200, json_encode($status));
    }
    
    if($num_rows==0)
    {
        $status = array(
        "status" => "not match",
        );
    
       sendResponse(204, json_encode($status));
    }
    

    iOS 代码:

    NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error: nil];
    
    NSString *status = [result objectForKey:@"status"];
    NSLog(@"Returned Json data : %@",status);
    

    【讨论】:

      【解决方案3】:

      您可以尝试调试并检查status 中的值是什么。我认为您的代码中的字符串比较没有任何问题。

      【讨论】:

        【解决方案4】:

        首先,您需要将 SBJson 库包含到您的项目中。 然后导入json.h

        #import "JSON.h"
        

        找到下面的代码:

        NSString *status = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSDictionary *dic = [status JSONValue];
        

        这个字典就是你的结果。有了这个字典,你可以检查你的键的值。

        【讨论】:

          【解决方案5】:

          PHP json_encode 转义空格字符。 它应该从 'not match' 生成一个 json,例如 {'not match'}

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-10-09
            • 1970-01-01
            • 2018-07-12
            • 2017-12-29
            • 1970-01-01
            • 2016-11-09
            • 1970-01-01
            相关资源
            最近更新 更多