我想知道是否有办法将多个数组从单个php文件返回到iOS应用程序。
我已经成功地使用了一个数组,但是当我添加另一个数组时,我似乎得到了null :(在这里使用相同的方法来保持简短,但实际上我从不同的表中得到结果)
PHP:
function getArray()
{
$query = "query here";
if ($result = $this->db->query($query))
{
$resultArray = array();
while($row = mysqli_fetch_assoc($result))
{
$resultArray[] = $row;
}
echo json_encode($resultArray);
$result->free();
}
}
getArray();
getArray();
当我在浏览器中打开我的php文件时,我看到类似这样的内容:
[{"id":"1","name":"John"},{"id":"2","name":"Susan"}]
[{"id":"1","name":"John"},{"id":"2","name":"Susan"}]
Xcode中:
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"urlhere"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSArray *resultsArray = (NSArray *)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"%@",resultsArray);
}
但是,resultsArray似乎正在返回(null)。如果我回显一次而不是两次它似乎工作。有没有办法让两个数组都进入Xcode,然后对它们使用NSJSONSerialization?谢谢!
答案 0 :(得分:2)
您应该将小数组json_encode
转换为JSON字符串,然后将它们放入另一个数组中。在您完成将所有小数组插入大数组后,您应该json_encode
并将它们返回到您的xcode。
在你的xcode中,尝试使用github
中的解析器框架/插件或其他人完成的google
,并从你的php解析你的检索NSData。它现在应该成为NSArray / NSDictionary,取决于你解析数据的方式。
这是一些如何解析我的数组的示例,在某些情况下您可能需要解析它们两次。尝试NSLog结果并检查完成解析后得到的结果。
P.S。这会将NSData解析为NSDictionary,如果您需要它,请尝试修改自己以返回NSArray。
- (NSDictionary *)parseJsonDataToNSDictionary:(NSData *)POSTReply
{
NSDictionary * jsonArray = [[NSDictionary alloc] init];
// Check iOS version
NSString *version = [[UIDevice currentDevice] systemVersion];
BOOL isAtLeast5 = [version floatValue] >= 5.0;
if(isAtLeast5) {
NSError *e = nil;
jsonArray = [NSJSONSerialization JSONObjectWithData:POSTReply options:NSJSONReadingMutableContainers error:&e];
if (!jsonArray) {
NSLog(@"Error parsing JSON: %@", e); //return false;
} else { /* sucess parsing */ }
} else {
// support for device which not iOS 5
NSString *json_string = [[NSString alloc] initWithData:POSTReply encoding:NSUTF8StringEncoding];
SBJsonParser *parser = [[SBJsonParser alloc] init];
jsonArray = [parser objectWithString:json_string];
}
return jsonArray;
}