私は、データを取得してそれを DatabaseManager に渡す役割を担う DataManager クラスを持っています。DataManager は、それをコア データに挿入します。
自分自身を Web サービスに公開するメソッドは以下のとおりです。
-(void)fetchDetailsForId:(NSString *)userId withFieldInformation:(NSString *)fieldInfo
{
if (SessionIsActive) {
[APIRequester startWithRequest:[NSString stringWithFormat:@"%@?%@",userId, fieldInfo]
completionHandler:^(APIConnectionManager *connection, id user, NSError *error) {
//This is where the results are returned and the API manages its own threads and returns the result lazily
}];
}
}
上記のメソッドは DataManager クラス内にあります。ここで、同じクラスのいくつかのメソッドが上記のメソッドを呼び出して、サーバーからデータを取得します。このフェッチされたデータは、コア データに挿入するために DatabaseManager に転送されます。これのサンプルは
-(void)fetchCurrentDataForLoggedInUser
{
NSData *fetchedData = [self fetchDetailsForId:loggedInId withFieldInformation:@"all"];
//the fetchedData is then forwarded to DatabaseManager
}
ここで、Web メソッド (最初のメソッド) がバックグラウンド スレッド (API によって管理される) でデータを取得するため、API が関連データを取得する前に Web メソッドが終了するため、上記のメソッドの「fetchedData」の値は null になります。 .
このような状況に対処するための最も推奨される方法を誰か教えてもらえますか? サンプルコードなどを求めているわけではありません。正しい方向性だけで十分です。ハッキングや簡単な回避策よりも永続的な解決策を探しています。
ありがとうございました