それを行うには多くの方法があり、いくつかは他の方法よりも「より正しい」ものです:-)しかし、あなたは正しい道を進んでいます。同様の状況で私が何をするかを説明します。
1- PHP エンジンの場合、データにアクセスするための API を作成する必要があります。どのデータ?テストのためにできる最も簡単でおそらく最初のこと (テスト目的のみ!!!!) は、ios APP から POST 経由でクエリを受け取り、エンコードされた 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);
結果は、「data」という名前のキーを持つ最初の辞書を持つ JSON オブジェクトです。「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 などの多くの組み込みオブジェクトとメソッドを備えています。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 を作成する方法についていくつかのアイデアを提供します。
幸運を