説明するのが難しい問題がありますが、困惑しています。iPadアプリには次のものがあります。
1) データは CoreData を使用して iPad に保存されます
2) データは SQL データベースにも保存されます
これらのデータ ストアは、iPad で (CoreData に) 収集された新しいデータが SQL データベースにアップロードされるように、随時同期されます。
同期プロセスは次のように機能します。
ステップ 1) CoreData データを配列にロードする
ステップ 2) SQL データを配列にロードする
ステップ 3) 2 つの配列が比較され、CoreData 配列にレコードが表示される場合は、必要なデータで SQL データベースを更新するために php ファイルが呼び出されます。
手順 4) SQL データが再読み込みされ、TableView に表示されます。
これは、ステップ 4 を除いてすべて正常に機能します。
ステップ 4 では、ステップ 1 と同じ手順を実行して SQL データを取得します。新しいデータは SQL データベースに表示されますが、ルーチンは 1 つのレコードしか取得しません。
例: SQL データベースからすべてのレコードをクリアすると、3 つのレコードを追加する同期プロセス (手順 1、2、および 3) を実行します。手順 4 でデータを取得すると (次のコードを使用)、 3 つのレコードが SQL データベースに表示されます。同じコードがステップ 1 でデータを正しく取得するのに、ステップ 4 では取得しない理由がわかりません。何かアイデアはありますか?
NSString *strURLClassRefreshed = [NSString stringWithFormat:@"%@%@", @"http://www.i-observe.co.uk/uploads/getiobserveinfo.php?schoolname=",obsSchoolName];
NSArray *observationsArrayClassRefreshed = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:strURLClassRefreshed]];
NSEnumerator *enumForObsClassRefreshed = [observationsArrayClassRefreshed objectEnumerator];
UPDATE ステップ 3 の php 呼び出しは、手順が完了するまで、つまりステップ 4 の後まで実際には実行されないようです。したがって、データは更新されません。どうしてこれなの?