我有一个 DataManager 类,它负责获取数据并将其交给 DatabaseManager,后者又会将其插入到核心数据中。
将自身暴露给 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 管理)中获取数据,因此上述方法中“fetchedData”的值将为 null,因为 web 方法在 API 获取相关数据之前退出.
有人能告诉我处理这种情况的最推荐方法吗?我不是要示例代码或任何东西,只要正确的方向就足够了。我正在寻找一个永久的解决方案,而不是破解或简单的解决方法。
谢谢