0

説明するのが難しい問題がありますが、困惑しています。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 の後まで実際には実行されないようです。したがって、データは更新されません。どうしてこれなの?

4

0 に答える 0