如何在 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 值以显示在文本字段中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 phpunit 测试 JsonArray 中的随机值
Android Kotlin Volley 如何从 JSONArray 中获取价值
如何解决 JSONArray 问题,无法获取数据,Android Studio