如何在 Xcode 中获取 JSONarray 值以显示在文本字段中? [关闭]

Posted

技术标签:

【中文标题】如何在 Xcode 中获取 JSONarray 值以显示在文本字段中? [关闭]【英文标题】:how to get JSONarray values in Xcode to display in textfield? [closed] 【发布时间】:2014-02-26 14:07:53 【问题描述】:

我知道这是一个非常老的问题要在这里问。但我对这个概念很陌生。所以只有我在问.. 这是我的php代码

<?php

$host = "localhost"; 
$user = "xcode"; 
$pass = "xcode"; 
$db="xcode";

$r = mysql_connect($host, $user, $pass);

if (!$r) 
echo "Could not connect to server\n";
trigger_error(mysql_error(), E_USER_ERROR);
 else 
echo "Connection established\n"; 


echo mysql_get_server_info() . "\n"; 
$r2 = mysql_select_db($db);

if (!$r2) 
echo "Cannot select database\n";
 trigger_error(mysql_error(), E_USER_ERROR);
 else 
echo "database selected\n"; 


$result1 = mysql_query("SELECT * FROM Persons");

$result=array();
while($row = mysql_fetch_array($result1))

array_push($result,array('firstName' => $row[0],'lastname'=>$row[1]));
echo json_encode(array("key" => $result));


mysql_close();

 ?>

和我的控制台价值

Connection established 5.5.34 database selected "key":["firstName":"Peter","lastname":"Griffin","firstName":"Glenn","lastname":"Quagmire","firstName":"Peter","lastname":"Griffin","firstName":"Glenn","lastname":"Quagmire"]

我需要在 Xcode 的文本字段中获取这些值,例如 名字:普拉亚 姓氏:卡维 提前致谢。

【问题讨论】:

您需要从服务器获取它,解析并放入文本字​​段。这很容易 我完成了,但我在文本字段中得到了空值 所以找到你丢失它的确切位置。你有来自服务器的 json 并看到它?你解析它并查看解析的数据? 顺便说一句,你为什么把这个 php 代码放在这里?做什么的?显示objective-c客户端代码不是更好吗? 我已经在这里发布了我的***.com/questions/22037255/… 【参考方案1】:

不确定你是否在这里要求,所以我将包括下载 JSON 的代码和将 JSON 的对象设置为 UITextFields 的代码。

JSON 对象下载代码:

- (id)makeURLRequestWithString:(NSString *)url 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url]
                                                cachePolicy:NSURLRequestReloadIgnoringCacheData
                                            timeoutInterval:10];

    NSURLResponse *response;
    NSError *error;

    // Make synchronous request
    NSData *urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                            returningResponse:&response
                                                        error:&error];

    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    if (urlData) 
        NSDictionary *dict = [NSJSONSerialization
                              JSONObjectWithData:urlData
                              options:kNilOptions
                              error:&error];
        return dict;
     else return error;

调用网络请求并获取结果的代码:

- (IBAction)requestJSON:(id)sender 
    dispatch_queue_t jsonParsingQueue = dispatch_queue_create("jsonParsingQueue", NULL);
    dispatch_async(jsonParsingQueue, ^ //Do request on another queue to prevent it from blocking UI
        id result = [self makeURLRequestWithString:@"http://www.blablabla.com/blabla.php"]; //Remember to include "http://"
        [self performSelectorOnMainThread:@selector(results:) withObject:result waitUntilDone:YES];
    );


- (void)results:(id)result 
    //Check if the id is an NSDictionary, otherwise treat it as an error
    if ([result isKindOfClass:[NSDictionary class]]) 
        NSArray *key = [result objectForKey:@"key"];
        NSDictionary *firstName = [key firstObject];
        self.yourFirstTextField.text = [firstName objectForKey:@"firstName"];
        self.yourSecondTextField.text = [firstName objectForKey:@"lastname"];

        //OR use this code to get all first and last names in the same UITextField:
        for(NSDictionary *dict in key) 
            self.yourTextField.text = [NSString stringWithFormat:@"%@\n%@\n%@", self.YourTextField.text, [dict objectForKey:@"firstName"], [dict objectForKey:@"lastname"]];
        
     else 
        //An NSError is returned. Handle it.
    

我从我自己的一个项目中复制了这段代码,并对其进行了一些修改以适应这项任务,但要注意可能存在一些拼写错误或简单的逻辑错误:-)

编辑: 我的 PHP 经验很少,所以如果需要一些特殊的 POST 或 GET 请求或其他东西来使服务器发送 JSON,则必须修改 makeUrlRequestWithString 方法以适应这一点。

【讨论】:

以上是关于如何在 Xcode 中获取 JSONarray 值以显示在文本字段中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 gson 从 JsonArray 中获取值

如何使用 phpunit 测试 JsonArray 中的随机值

Android Kotlin Volley 如何从 JSONArray 中获取价值

如何解决 JSONArray 问题,无法获取数据,Android Studio

如何从 JsonArray 中获取 NSDictonarys?

如果 JSONArray 中的 id 相同,如何在一个 textview 上显示值