有很多方法可以做到这一点,有些方法比其他方法“更正确”:-) 但你走对了。我解释了在类似情况下我会做什么:
1- 对于 PHP 引擎,您应该创建一个 API 来访问您的数据。哪些数据?最简单的,可能是您可以做的第一件事 TO TEST(仅用于测试目的!!!!)是创建一个页面,该页面通过 POST 从您的 ios APP 接收查询并使用编码的 JSON 字符串进行回答。使用 JSON,您可以传输对象的整个层次结构:变量、数组、字典……由您决定如何将对象链接在一起。如果您要编码的数据是一个表格,您可以执行类似的操作:
// first connect to the database and execute the query, then...
$data = array();
while(!$RS->EOF){
for ($i = 0; $i < $cols; $i++){
$rowName = utf8_encode($RS->Fields[$i]->name);
$rowValue = utf8_encode($RS->Fields[$i]->value);
$rowData[$rowName] = $rowValue;
}
array_push($data, $rowData);
$RS->MoveNext();
}
$response['data'] = $data;
echo json_encode($response);
结果是一个 JSON 对象,其中包含一个名为“data”的键的第一个字典。在“data”键里面有一个字典数组。每个字典都有键的列名和数据的列值:
data = (
{
attivita = "this is the first row in the table";
id = 2548;
},
{
attivita = "this is the second row in the table";
id = 2547;
};
}
您可以简单地使用 json_encode 来创建您的 json 字符串。
在 iPhone 端,我建议你下载并使用 AFNetworking。这是一个非常好的和完整的开源框架,有很多用于 http/https 请求、XML、JSON ecc 的内置对象和方法......使用 AFNetworking 你可以用类似的方式发出请求:
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:@"http://url.for.the.php.page"];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:mainPath parameters:params];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
// your success code here
// remember, the first object is a dictionary with a key called data
NSArray *arrayOfData = [JSON objectForKey:@"data"];
NSMutableArray *arrayOfActivities = [NSMutableArray array];
for (NSDictionary *objectDictionary in arrayOfData) {
// objectDictionary is your dictionary containing
// a key with the column name and a value with the column content
// here you can init your custom objects
}
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
// your failure code here
}];
[operation start];
如您所见,JSONRequestOperationWithRequest: 方法有一个完成处理程序返回解码后的 JSON,因此您可以使用 objectForKey 或 objectAtIndex 直接访问您的字典/数组;-)
最后的建议:在生产和安全环境中,您应该避免通过发布请求发送查询。我在此处粘贴的代码用于私人应用程序(仅供我用于测试目的)。最好为每种请求使用不同的 API 和安全的身份验证方法(查看 oAuth)。我建议你看一下 Instagram 或 Twitter API(Instagram 更简单),尝试使用它。他们会给你一些关于如何创建自己的 API 的想法。
祝你好运